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

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/entity-selector/dist/entity-selector.bundle.js.map
{"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/entity/entity-error.js","../src/entity/entity-error-collection.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<MatchIndex>)\n\t{\n\t\tlet encode = true;\n\t\tif (text instanceof TextNode)\n\t\t{\n\t\t\tif (text.getType() === 'html')\n\t\t\t{\n\t\t\t\tencode = false;\n\t\t\t}\n\n\t\t\ttext = text.getText();\n\t\t}\n\n\t\tif (!Type.isStringFilled(text) || !matches || matches.count() === 0)\n\t\t{\n\t\t\treturn text;\n\t\t}\n\n\t\tlet result = '';\n\t\tlet offset = 0;\n\t\tlet chunk = '';\n\t\tmatches.forEach((match: MatchIndex) => {\n\n\t\t\tif (offset > match.getStartIndex())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tchunk = text.substring(offset, match.getStartIndex());\n\t\t\tresult += encode ? Text.encode(chunk) : chunk;\n\n\t\t\tresult += '<span class=\"ui-selector-highlight-mark\">';\n\n\t\t\tchunk = text.substring(match.getStartIndex(), match.getEndIndex());\n\t\t\tresult += encode ? Text.encode(chunk) : chunk;\n\n\t\t\tresult += '</span>';\n\n\t\t\toffset = match.getEndIndex();\n\n\t\t});\n\n\t\tchunk = text.substring(offset);\n\t\tresult += encode ? Text.encode(chunk) : chunk;\n\n\t\treturn result;\n\t}\n}","import { Type, Dom } from 'main.core';\nimport type { ItemBadgeOptions } from './item-badge-options';\nimport TextNode from '../common/text-node';\nimport type { TextNodeOptions } from '../common/text-node-options';\n\nexport default class ItemBadge\n{\n\ttitle: ?TextNode = null;\n\ttextColor: ?string = null;\n\tbgColor: ?string = null;\n\tcontainers: WeakMap<HTMLElement, HTMLElement> = new WeakMap();\n\n\tconstructor(badgeOptions: ItemBadgeOptions)\n\t{\n\t\tconst options: ItemBadgeOptions = Type.isPlainObject(badgeOptions) ? badgeOptions : {};\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setBgColor(options.bgColor);\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null && !titleNode.isNullable() ? titleNode.getText() : '';\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetTitle(title: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\treturn this.textColor;\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t}\n\t}\n\n\tgetBgColor(): ?string\n\t{\n\t\treturn this.bgColor;\n\t}\n\n\tsetBgColor(bgColor: ?string): void\n\t{\n\t\tif (Type.isString(bgColor) || bgColor === null)\n\t\t{\n\t\t\tthis.bgColor = bgColor;\n\t\t}\n\t}\n\n\tgetContainer(target: HTMLElement): HTMLElement\n\t{\n\t\tlet container = this.containers.get(target);\n\t\tif (!container)\n\t\t{\n\t\t\tcontainer = document.createElement('span');\n\t\t\tcontainer.className = 'ui-selector-item-badge';\n\n\t\t\tthis.containers.set(target, container);\n\t\t}\n\n\t\treturn container;\n\t}\n\n\trenderTo(target: HTMLElement): void\n\t{\n\t\tconst container = this.getContainer(target);\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\tthis.getTitleNode().renderTo(container);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcontainer.textContent = '';\n\t\t}\n\n\t\tDom.style(container, 'color', this.getTextColor());\n\t\tDom.style(container, 'background-color', this.getBgColor())\n\t\tDom.append(container, target);\n\t}\n\n\ttoJSON()\n\t{\n\t\treturn {\n\t\t\ttitle: this.getTitleNode(),\n\t\t\ttextColor: this.getTextColor(),\n\t\t\tbgColor: this.getBgColor()\n\t\t}\n\t}\n}","import { Type } from 'main.core';\nimport type { SearchFieldOptions } from './search-field-options';\n\nexport default class SearchField\n{\n\tname: string = null;\n\ttype: string = 'string';\n\tsearchable: boolean = true;\n\tsystem: boolean = false;\n\tsort: ?number = null;\n\n\tconstructor(fieldOptions: SearchFieldOptions)\n\t{\n\t\tconst options = Type.isPlainObject(fieldOptions) ? fieldOptions : {};\n\n\t\tif (!Type.isStringFilled(options.name))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.SearchField: \"name\" parameter is required.');\n\t\t}\n\n\t\tthis.name = options.name;\n\t\tthis.setType(options.type);\n\t\tthis.setSystem(options.system);\n\t\tthis.setSort(options.sort);\n\t\tthis.setSearchable(options.searchable);\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.name;\n\t}\n\n\tgetType(): string\n\t{\n\t\treturn this.type;\n\t}\n\n\tsetType(type: string): void\n\t{\n\t\tif (Type.isStringFilled(type))\n\t\t{\n\t\t\tthis.type = type;\n\t\t}\n\t}\n\n\tgetSort(): ?number\n\t{\n\t\treturn this.sort;\n\t}\n\n\tsetSort(sort: ?number): void\n\t{\n\t\tif (Type.isNumber(sort) || sort === null)\n\t\t{\n\t\t\tthis.sort = sort;\n\t\t}\n\t}\n\n\tsetSearchable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.searchable = flag;\n\t\t}\n\t}\n\n\tisSearchable(): boolean\n\t{\n\t\treturn this.searchable;\n\t}\n\n\tsetSystem(flag: boolean)\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.system = flag;\n\t\t}\n\t}\n\n\tisCustom(): boolean\n\t{\n\t\treturn !this.isSystem();\n\t}\n\n\tisSystem(): boolean\n\t{\n\t\treturn this.system;\n\t}\n}","import SearchField from './search-field';\n\nexport default class MatchIndex\n{\n\tfield: SearchField = null;\n\tqueryWord: string = null;\n\tstartIndex: number = null;\n\tendIndex: number = null;\n\n\tconstructor(field: SearchField, queryWord: string, startIndex: number)\n\t{\n\t\tthis.field = field;\n\t\tthis.queryWord = queryWord;\n\t\tthis.startIndex = startIndex;\n\t\tthis.endIndex = startIndex + queryWord.length;\n\t}\n\n\tgetField(): SearchField\n\t{\n\t\treturn this.field;\n\t}\n\n\tgetQueryWord(): string\n\t{\n\t\treturn this.queryWord;\n\t}\n\n\tgetStartIndex(): number\n\t{\n\t\treturn this.startIndex;\n\t}\n\n\tgetEndIndex(): number\n\t{\n\t\treturn this.endIndex;\n\t}\n}","import { Type } from 'main.core';\n\nimport type SearchField from './search-field';\nimport MatchIndex from './match-index';\nimport { OrderedArray } from 'main.core.collections';\n\nconst comparator = (a: MatchIndex, b: MatchIndex) => {\n\n\tif (a.getStartIndex() === b.getStartIndex())\n\t{\n\t\treturn a.getEndIndex() > b.getEndIndex() ? -1 : 1;\n\t}\n\telse\n\t{\n\t\treturn a.getStartIndex() > b.getStartIndex() ? 1 : -1;\n\t}\n};\n\nexport default class MatchField\n{\n\tfield: SearchField = null;\n\tmatchIndexes: OrderedArray<MatchIndex> = new OrderedArray(comparator);\n\n\tconstructor(field: SearchField, indexes: MatchIndex[] = [])\n\t{\n\t\tthis.field = field;\n\t\tthis.addIndexes(indexes);\n\t}\n\n\tgetField(): SearchField\n\t{\n\t\treturn this.field;\n\t}\n\n\tgetMatches(): OrderedArray<MatchIndex>\n\t{\n\t\treturn this.matchIndexes;\n\t}\n\n\taddIndex(matchIndex: MatchIndex): void\n\t{\n\t\tthis.matchIndexes.add(matchIndex);\n\t}\n\n\taddIndexes(matchIndexes: MatchIndex[]): void\n\t{\n\t\tif (Type.isArray(matchIndexes))\n\t\t{\n\t\t\tmatchIndexes.forEach(matchIndex => {\n\t\t\t\tthis.addIndex(matchIndex);\n\t\t\t});\n\t\t}\n\t}\n}","import { Event, Type } from 'main.core';\n\nexport default class Animation\n{\n\tstatic handleTransitionEnd(element: HTMLElement, propertyName: string | string[]): Promise\n\t{\n\t\tconst properties = Type.isArray(propertyName) ? new Set(propertyName) : new Set([propertyName]);\n\n\t\treturn new Promise(function(resolve) {\n\t\t\tconst handler = (event: TransitionEvent) => {\n\t\t\t\tif (event.target !== element || !properties.has(event.propertyName))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tproperties.delete(event.propertyName);\n\t\t\t\tif (properties.size === 0)\n\t\t\t\t{\n\t\t\t\t\tresolve(event);\n\t\t\t\t\tEvent.unbind(element, 'transitionend', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tEvent.bind(element, 'transitionend', handler);\n\t\t});\n\t}\n\n\tstatic handleAnimationEnd(element: HTMLElement, animationName: string)\n\t{\n\t\treturn new Promise(resolve => {\n\t\t\tconst handler = (event) => {\n\t\t\t\tif (!animationName || (event.animationName === animationName))\n\t\t\t\t{\n\t\t\t\t\tresolve(event);\n\t\t\t\t\tEvent.unbind(element, 'animationend', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tEvent.bind(element, 'animationend', handler);\n\t\t});\n\t}\n}","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<ItemNode> = null;\n\tchildItems: WeakMap<Item, ItemNode> = new WeakMap(); // for the fast access\n\n\tloaded: boolean = false;\n\tdynamic: boolean = false;\n\tdynamicPromise: ?Promise = null;\n\tloader: Loader = null;\n\topen: boolean = false;\n\tautoOpen: boolean = false;\n\tfocused: boolean = false;\n\n\trenderMode: RenderMode = RenderMode.PARTIAL;\n\ttitle: ?TextNode = null;\n\tsubtitle: ?TextNode = null;\n\tsupertitle: ?TextNode = null;\n\tcaption: ?TextNode = null;\n\tcaptionOptions: CaptionOptions = {};\n\tavatar: ?string = null;\n\tavatarOptions: ?AvatarOptions = null;\n\tlink: ?string = null;\n\tlinkTitle: ?TextNode = null;\n\ttextColor: ?string = null;\n\tbadges: ItemBadgeOptions[] = null;\n\tbadgesOptions: BadgesOptions = {};\n\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\toutline: null,\n\t\t\t\toutlineOffset: null,\n\t\t\t};\n\t\t\tthis.textColor = '';\n\t\t\tthis.link = '';\n\t\t\tthis.badges = [];\n\t\t\tthis.captionOptions = {\n\t\t\t\tfitContent: null,\n\t\t\t\tmaxWidth: null,\n\t\t\t\tjustifyContent: null,\n\t\t\t};\n\t\t\tthis.badgesOptions = {\n\t\t\t\tfitContent: null,\n\t\t\t\tmaxWidth: null,\n\t\t\t\tjustifyContent: null,\n\t\t\t};\n\t\t}\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setSubtitle(options.subtitle);\n\t\tthis.setSupertitle(options.supertitle);\n\t\tthis.setCaption(options.caption);\n\t\tthis.setCaptionOptions(options.captionOptions);\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setLink(options.link);\n\t\tthis.setLinkTitle(options.linkTitle);\n\t\tthis.setBadges(options.badges);\n\t\tthis.setBadgesOptions(options.badgesOptions);\n\n\t\tthis.setDynamic(options.dynamic);\n\t\tthis.setOpen(options.open);\n\t}\n\n\tgetItem(): Item\n\t{\n\t\treturn this.item;\n\t}\n\n\tisRoot(): boolean\n\t{\n\t\treturn this.getParentNode() === null;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.getTab().getDialog();\n\t}\n\n\tsetTab(tab: Tab): void\n\t{\n\t\tthis.tab = tab;\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetParentNode(): ?ItemNode\n\t{\n\t\treturn this.parentNode;\n\t}\n\n\tsetParentNode(parentNode: ItemNode): void\n\t{\n\t\tthis.parentNode = parentNode;\n\t}\n\n\tgetNextSibling(): ?ItemNode\n\t{\n\t\tif (!this.getParentNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst siblings = this.getParentNode().getChildren();\n\t\tconst index = siblings.getIndex(this);\n\n\t\treturn siblings.getByIndex(index + 1);\n\t}\n\n\tgetPreviousSibling(): ?ItemNode\n\t{\n\t\tif (!this.getParentNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst siblings = this.getParentNode().getChildren();\n\t\tconst index = siblings.getIndex(this);\n\n\t\treturn siblings.getByIndex(index - 1);\n\t}\n\n\taddChildren(children: ItemOptions[]): void\n\t{\n\t\tif (!Type.isArray(children))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tchildren.forEach((childOptions: ItemOptions) => {\n\t\t\tdelete childOptions.tabs;\n\t\t\tconst childItem = this.getDialog().addItem(childOptions);\n\n\t\t\tconst childNode = this.addItem(childItem, childOptions.nodeOptions);\n\t\t\tchildNode.addChildren(childOptions.children);\n\t\t});\n\t}\n\n\taddChild(child: ItemNode): ItemNode\n\t{\n\t\tif (!(child instanceof ItemNode))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode: an item must be an instance of EntitySelector.ItemNode.');\n\t\t}\n\n\t\tif (this.isChildOf(child) || child === this)\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode: a child item cannot be a parent of current item.');\n\t\t}\n\n\t\tif (this.getChildren().has(child) || this.childItems.has(child.getItem()))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tthis.getChildren().add(child);\n\t\tthis.childItems.set(child.getItem(), child);\n\n\t\tchild.setTab(this.getTab());\n\t\tchild.setParentNode(this);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.renderWithDebounce();\n\t\t}\n\n\t\treturn child;\n\t}\n\n\tgetDepthLevel(): number\n\t{\n\t\treturn this.isRoot() ? 0 : this.getParentNode().getDepthLevel() + 1;\n\t}\n\n\taddItem(item: Item, nodeOptions: ItemNodeOptions): ItemNode\n\t{\n\t\tlet itemNode = this.childItems.get(item);\n\t\tif (!itemNode)\n\t\t{\n\t\t\titemNode = item.createNode(nodeOptions);\n\t\t\tthis.addChild(itemNode);\n\t\t}\n\n\t\treturn itemNode;\n\t}\n\n\taddItems(items: Item[] | Array<[Item, ItemNodeOptions]>): void\n\t{\n\t\tif (Type.isArray(items))\n\t\t{\n\t\t\tthis.disableRender();\n\n\t\t\titems.forEach((item: Item | [Item, ItemNodeOptions]) => {\n\t\t\t\tif (Type.isArray(item) && item.length === 2)\n\t\t\t\t{\n\t\t\t\t\tthis.addItem(item[0], item[1]);\n\t\t\t\t}\n\t\t\t\telse if (item instanceof Item)\n\t\t\t\t{\n\t\t\t\t\tthis.addItem(item);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.enableRender();\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderWithDebounce();\n\t\t\t}\n\t\t}\n\t}\n\n\thasItem(item: Item): boolean\n\t{\n\t\treturn this.childItems.has(item);\n\t}\n\n\tremoveChild(child: ItemNode): boolean\n\t{\n\t\tif (!this.getChildren().has(child))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tchild.removeChildren();\n\n\t\tif (child.isFocused())\n\t\t{\n\t\t\tchild.unfocus();\n\t\t}\n\n\t\tchild.setParentNode(null);\n\t\tchild.getItem().removeNode(child);\n\n\t\tthis.getChildren().delete(child);\n\t\tthis.childItems.delete(child.getItem());\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tDom.remove(child.getOuterContainer());\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tremoveChildren(): void\n\t{\n\t\tif (!this.hasChildren())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getChildren().forEach((node: ItemNode) => {\n\n\t\t\tnode.removeChildren();\n\n\t\t\tif (node.isFocused())\n\t\t\t{\n\t\t\t\tnode.unfocus();\n\t\t\t}\n\n\t\t\tnode.setParentNode(null);\n\t\t\tnode.getItem().removeNode(node);\n\t\t});\n\n\t\tthis.getChildren().clear();\n\t\tthis.childItems = new WeakMap();\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tif (Browser.isIE())\n\t\t\t{\n\t\t\t\tDom.clean(this.getChildrenContainer());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getChildrenContainer().textContent = '';\n\t\t\t}\n\t\t}\n\t}\n\n\thasChild(child: ItemNode): boolean\n\t{\n\t\treturn this.getChildren().has(child);\n\t}\n\n\tisChildOf(parent: ItemNode): boolean\n\t{\n\t\tlet parentNode = this.getParentNode();\n\t\twhile (parentNode !== null)\n\t\t{\n\t\t\tif (parentNode === parent)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tparentNode = parentNode.getParentNode();\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetFirstChild(): ?ItemNode\n\t{\n\t\treturn this.children.getFirst();\n\t}\n\n\tgetLastChild(): ?ItemNode\n\t{\n\t\treturn this.children.getLast();\n\t}\n\n\tgetChildren(): OrderedArray<ItemNode>\n\t{\n\t\treturn this.children;\n\t}\n\n\thasChildren(): boolean\n\t{\n\t\treturn this.children.count() > 0;\n\t}\n\n\tloadChildren(): Promise\n\t{\n\t\tif (!this.isDynamic())\n\t\t{\n\t\t\tthrow new Error('EntitySelector.ItemNode.loadChildren: an item node is not dynamic.');\n\t\t}\n\n\t\tif (this.dynamicPromise)\n\t\t{\n\t\t\treturn this.dynamicPromise;\n\t\t}\n\n\t\tthis.dynamicPromise = Ajax.runAction('ui.entityselector.getChildren', {\n\t\t\tjson: {\n\t\t\t\tparentItem: this.getItem().getAjaxJson(),\n\t\t\t\tdialog: this.getDialog().getAjaxJson()\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontext: this.getDialog().getContext()\n\t\t\t}\n\t\t});\n\n\t\tthis.dynamicPromise.then((response) => {\n\t\t\tif (response && response.data && Type.isPlainObject(response.data.dialog))\n\t\t\t{\n\t\t\t\tthis.addChildren(response.data.dialog.items);\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.loaded = true;\n\t\t});\n\n\t\tthis.dynamicPromise.catch((error) => {\n\t\t\tthis.loaded = false;\n\t\t\tthis.dynamicPromise = null;\n\t\t\tconsole.error(error);\n\t\t});\n\n\t\treturn this.dynamicPromise;\n\t}\n\n\tsetOpen(open: boolean): void\n\t{\n\t\tif (Type.isBoolean(open))\n\t\t{\n\t\t\tif (open && this.isDynamic() && !this.isLoaded())\n\t\t\t{\n\t\t\t\tthis.setAutoOpen(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.open = open;\n\t\t\t}\n\t\t}\n\t}\n\n\tisOpen(): boolean\n\t{\n\t\treturn this.open;\n\t}\n\n\tisAutoOpen(): boolean\n\t{\n\t\treturn this.autoOpen && this.isDynamic() && !this.isLoaded();\n\t}\n\n\tsetAutoOpen(autoOpen: boolean): void\n\t{\n\t\tif (Type.isBoolean(autoOpen))\n\t\t{\n\t\t\tthis.autoOpen = autoOpen;\n\t\t}\n\t}\n\n\tsetDynamic(dynamic: boolean): void\n\t{\n\t\tif (Type.isBoolean(dynamic))\n\t\t{\n\t\t\tthis.dynamic = dynamic;\n\t\t}\n\t}\n\n\tisDynamic(): boolean\n\t{\n\t\treturn this.dynamic;\n\t}\n\n\tisLoaded(): boolean\n\t{\n\t\treturn this.loaded;\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getIndicatorContainer(),\n\t\t\t\tsize: 30\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t\tDom.addClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\thideLoader(): void\n\t{\n\t\tvoid this.getLoader().hide();\n\t\tDom.removeClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\tdestroyLoader(): void\n\t{\n\t\tthis.getLoader().destroy();\n\t\tthis.loader = null;\n\t\tDom.removeClass(this.getIndicatorContainer(), 'ui-selector-item-indicator-hidden');\n\t}\n\n\texpand(): void\n\t{\n\t\tif (this.isOpen() || (!this.hasChildren() && !this.isDynamic()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isDynamic() && !this.isLoaded())\n\t\t{\n\t\t\tthis.loadChildren().then(() => {\n\t\t\t\tthis.destroyLoader();\n\t\t\t\tthis.expand();\n\t\t\t});\n\n\t\t\tthis.showLoader();\n\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\tDom.style(this.getChildrenContainer(), 'height', '0px');\n\t\tDom.style(this.getChildrenContainer(), 'opacity', 0);\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(this.getChildrenContainer(), 'height', `${this.getChildrenContainer().scrollHeight}px`);\n\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', 1);\n\n\t\t\t\tAnimation.handleTransitionEnd(this.getChildrenContainer(), 'height').then(() => {\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'height', null);\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', null);\n\t\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\t\t\t\tthis.setOpen(true);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tcollapse(): void\n\t{\n\t\tif (!this.isOpen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.style(this.getChildrenContainer(), 'height', `${this.getChildrenContainer().offsetHeight}px`);\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(this.getChildrenContainer(), 'height', '0px');\n\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', 0);\n\n\t\t\t\tAnimation.handleTransitionEnd(this.getChildrenContainer(), 'height').then(() => {\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'height', null);\n\t\t\t\t\tDom.style(this.getChildrenContainer(), 'opacity', null);\n\t\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-selector-item-box-open');\n\t\t\t\t\tthis.setOpen(false);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\trender(appendChildren = false): void\n\t{\n\t\tif (this.isRoot())\n\t\t{\n\t\t\tthis.renderRoot(appendChildren);\n\t\t\treturn;\n\t\t}\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\ttitleNode.renderTo(this.getTitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t}\n\n\t\tconst supertitleNode = this.getSupertitleNode();\n\t\tif (supertitleNode)\n\t\t{\n\t\t\tsupertitleNode.renderTo(this.getSupertitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getSupertitleContainer().textContent = '';\n\t\t}\n\n\t\tconst subtitleNode = this.getSubtitleNode();\n\t\tif (subtitleNode)\n\t\t{\n\t\t\tsubtitleNode.renderTo(this.getSubtitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getSubtitleContainer().textContent = '';\n\t\t}\n\n\t\tconst captionNode = this.getCaptionNode();\n\t\tif (captionNode)\n\t\t{\n\t\t\tcaptionNode.renderTo(this.getCaptionContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getCaptionContainer().textContent = '';\n\t\t}\n\n\t\tconst captionFitContent = this.getCaptionOption('fitContent');\n\t\tif (Type.isBoolean(captionFitContent))\n\t\t{\n\t\t\tDom.style(this.getCaptionContainer(), 'flex-shrink', captionFitContent ? 0 : null);\n\t\t}\n\n\t\tconst captionJustifyContent = this.getCaptionOption('justifyContent');\n\t\tif (Type.isStringFilled(captionJustifyContent) || captionJustifyContent === null)\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getCaptionContainer(),\n\t\t\t\t{\n\t\t\t\t\tflexGrow: captionJustifyContent ? '1' : null,\n\t\t\t\t\ttextAlign: captionJustifyContent || null,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst captionMaxWidth = this.getCaptionOption('maxWidth');\n\t\tif (Type.isString(captionMaxWidth) || Type.isNumber(captionMaxWidth))\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getCaptionContainer(),\n\t\t\t\t'max-width',\n\t\t\t\tType.isNumber(captionMaxWidth) ? `${captionMaxWidth}px` : captionMaxWidth\n\t\t\t);\n\t\t}\n\n\t\tif (Type.isStringFilled(this.getTextColor()))\n\t\t{\n\t\t\tthis.getTitleContainer().style.color = this.getTextColor();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().style.removeProperty('color');\n\t\t}\n\n\t\tconst avatar = this.getAvatar();\n\t\tif (Type.isStringFilled(avatar))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundImage = `url('${encodeUrl(avatar)}')`;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst bgImage = this.getAvatarOption('bgImage');\n\t\t\tif (Type.isStringFilled(bgImage))\n\t\t\t{\n\t\t\t\tthis.getAvatarContainer().style.backgroundImage = bgImage;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getAvatarContainer().style.removeProperty('background-image');\n\t\t\t}\n\t\t}\n\n\t\tconst bgColor = this.getAvatarOption('bgColor');\n\t\tif (Type.isStringFilled(bgColor))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundColor = bgColor;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('background-color');\n\t\t}\n\n\t\tconst bgSize = this.getAvatarOption('bgSize');\n\t\tif (Type.isStringFilled(bgSize))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.backgroundSize = bgSize;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('background-size');\n\t\t}\n\n\t\tconst border = this.getAvatarOption('border');\n\t\tif (Type.isStringFilled(border))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.border = border;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('border');\n\t\t}\n\n\t\tconst borderRadius = this.getAvatarOption('borderRadius');\n\t\tif (Type.isStringFilled(borderRadius))\n\t\t{\n\t\t\tthis.getAvatarContainer().style.borderRadius = borderRadius;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getAvatarContainer().style.removeProperty('border-radius');\n\t\t}\n\n\t\tconst outline = this.getAvatarOption('outline');\n\t\tDom.style(this.getAvatarContainer(), 'outline', outline);\n\n\t\tconst outlineOffset = this.getAvatarOption('outlineOffset');\n\t\tDom.style(this.getAvatarContainer(), 'outline-offset', outlineOffset);\n\n\t\tDom.clean(this.getBadgeContainer());\n\t\tthis.getBadges().forEach((badge: ItemBadge) => {\n\t\t\tbadge.renderTo(this.getBadgeContainer());\n\t\t});\n\n\t\tconst badgesFitContent = this.getBadgesOption('fitContent');\n\t\tif (Type.isBoolean(badgesFitContent))\n\t\t{\n\t\t\tDom.style(this.getBadgeContainer(), 'flex-shrink', badgesFitContent ? 0 : null);\n\t\t}\n\n\t\tconst badgesJustifyContent = this.getBadgesOption('justifyContent');\n\t\tif (Type.isStringFilled(badgesJustifyContent) || badgesJustifyContent === null)\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getBadgeContainer(),\n\t\t\t\t{\n\t\t\t\t\tflexGrow: badgesJustifyContent ? '1' : null,\n\t\t\t\t\tjustifyContent: badgesJustifyContent || null,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tconst badgesMaxWidth = this.getBadgesOption('maxWidth');\n\t\tif (Type.isString(badgesMaxWidth) || Type.isNumber(badgesMaxWidth))\n\t\t{\n\t\t\tDom.style(\n\t\t\t\tthis.getBadgeContainer(),\n\t\t\t\t'max-width',\n\t\t\t\tType.isNumber(badgesMaxWidth) ? `${badgesMaxWidth}px` : badgesMaxWidth\n\t\t\t);\n\t\t}\n\n\t\tconst linkTitleNode = this.getLinkTitleNode();\n\t\tif (linkTitleNode)\n\t\t{\n\t\t\tlinkTitleNode.renderTo(this.getLinkTextContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getLinkTextContainer().textContent = '';\n\t\t}\n\n\t\tif (this.hasChildren() || this.isDynamic())\n\t\t{\n\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-has-children');\n\t\t\tif (this.getDepthLevel() >= this.getTab().getItemMaxDepth())\n\t\t\t{\n\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-item-box-max-depth');\n\t\t\t}\n\t\t}\n\t\telse if (this.getOuterContainer().classList.contains('ui-selector-item-box-has-children'))\n\t\t{\n\t\t\tDom.removeClass(\n\t\t\t\tthis.getOuterContainer(),\n\t\t\t\t['ui-selector-item-box-has-children', 'ui-selector-item-box-max-depth']\n\t\t\t);\n\t\t}\n\n\t\tif (this.hasChildren())\n\t\t{\n\t\t\tconst hasVisibleChild = this.getChildren().getAll().some((child: ItemNode) => {\n\t\t\t\treturn child.isHidden() !== true;\n\t\t\t});\n\n\t\t\tif (!hasVisibleChild)\n\t\t\t{\n\t\t\t\tthis.#setHidden(true);\n\t\t\t}\n\t\t}\n\n\t\tthis.toggleVisibility();\n\t\tthis.highlight();\n\t\tthis.renderChildren(appendChildren);\n\n\t\tif (this.isAutoOpen())\n\t\t{\n\t\t\tthis.setAutoOpen(false);\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tthis.expand();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis.rendered = true;\n\t}\n\n\t/**\n\t * @private\n\t */\n\trenderRoot(appendChildren = false): void\n\t{\n\t\tthis.renderChildren(appendChildren);\n\t\tthis.rendered = true;\n\n\t\tconst stub = this.getTab().getStub();\n\t\tif (stub && stub.isAutoShow() && (this.getDialog().isLoaded() || !this.getDialog().hasDynamicLoad()))\n\t\t{\n\t\t\tif (this.hasChildren())\n\t\t\t{\n\t\t\t\tstub.hide();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstub.show();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\trenderChildren(appendChildren = false): void\n\t{\n\t\tif (!appendChildren)\n\t\t{\n\t\t\tif (Browser.isIE())\n\t\t\t{\n\t\t\t\tDom.clean(this.getChildrenContainer());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getChildrenContainer().textContent = '';\n\t\t\t}\n\t\t}\n\n\t\tif (this.hasChildren())\n\t\t{\n\t\t\tlet previousSibling: ItemNode = null;\n\t\t\tthis.getChildren().forEach((child: ItemNode) => {\n\t\t\t\tchild.render(appendChildren);\n\t\t\t\tconst container = child.getOuterContainer();\n\n\t\t\t\tif (!appendChildren)\n\t\t\t\t{\n\t\t\t\t\tDom.append(container, this.getChildrenContainer());\n\t\t\t\t}\n\t\t\t\tif (!container.parentNode)\n\t\t\t\t{\n\t\t\t\t\tif (previousSibling !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tDom.insertAfter(container, previousSibling.getOuterContainer());\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tDom.append(container, this.getChildrenContainer());\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpreviousSibling = child;\n\t\t\t});\n\t\t}\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered && this.getDialog() && this.getDialog().isRendered();\n\t}\n\n\tenableRender(): void\n\t{\n\t\tthis.rendered = true;\n\t}\n\n\tdisableRender(): void\n\t{\n\t\tthis.rendered = false;\n\t}\n\n\tgetRenderMode(): RenderMode\n\t{\n\t\treturn this.renderMode;\n\t}\n\n\tisHidden(): boolean\n\t{\n\t\treturn this.hidden === true || this.getItem().isHidden() === true;\n\t}\n\n\tsetHidden(flag: boolean): void\n\t{\n\t\tif (!Type.isBoolean(flag) || this.isRoot())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#setHidden(flag);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.toggleVisibility();\n\n\t\t\tlet parentNode = this.getParentNode();\n\t\t\tconst isHidden = this.isHidden();\n\t\t\twhile (parentNode.isRoot() === false)\n\t\t\t{\n\t\t\t\tif (isHidden)\n\t\t\t\t{\n\t\t\t\t\tconst hasVisibleChild = parentNode.getChildren().getAll().some((child: ItemNode) => {\n\t\t\t\t\t\treturn child.isHidden() !== true;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!hasVisibleChild)\n\t\t\t\t\t{\n\t\t\t\t\t\tparentNode.#setHidden(true);\n\t\t\t\t\t}\n\n\t\t\t\t\tparentNode.toggleVisibility();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tparentNode.#setHidden(false);\n\t\t\t\t\tparentNode.toggleVisibility();\n\t\t\t\t\tif (parentNode.isHidden())\n\t\t\t\t\t{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparentNode = parentNode.getParentNode();\n\t\t\t}\n\t\t}\n\t}\n\n\t#setHidden(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag) && !this.isRoot())\n\t\t{\n\t\t\tthis.hidden = flag;\n\t\t}\n\t}\n\n\ttoggleVisibility(): boolean\n\t{\n\t\tif (this.isHidden())\n\t\t{\n\t\t\tDom.addClass(this.getOuterContainer(), '--hidden');\n\t\t}\n\t\telse if (this.getOuterContainer().classList.contains('--hidden'))\n\t\t{\n\t\t\tDom.removeClass(this.getOuterContainer(), '--hidden');\n\t\t}\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null ? titleNode.getText() : null;\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title !== null ? this.title: this.getItem().getTitleNode();\n\t}\n\n\tsetTitle(title: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(title) || Type.isPlainObject(title))\n\t\t{\n\t\t\tthis.title = new TextNode(title);\n\t\t}\n\t\telse if (title === null)\n\t\t{\n\t\t\tthis.title = null;\n\t\t}\n\t}\n\n\tgetSubtitle(): ?string\n\t{\n\t\tconst subtitleNode = this.getSubtitleNode();\n\n\t\treturn subtitleNode !== null ? subtitleNode.getText() : null;\n\t}\n\n\tgetSubtitleNode(): ?TextNode\n\t{\n\t\treturn this.subtitle !== null ? this.subtitle: this.getItem().getSubtitleNode();\n\t}\n\n\tsetSubtitle(subtitle: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(subtitle) || Type.isPlainObject(subtitle))\n\t\t{\n\t\t\tthis.subtitle = new TextNode(subtitle);\n\t\t}\n\t\telse if (subtitle === null)\n\t\t{\n\t\t\tthis.subtitle = null;\n\t\t}\n\t}\n\n\tgetSupertitle(): ?string\n\t{\n\t\tconst supertitleNode = this.getSupertitleNode();\n\n\t\treturn supertitleNode !== null ? supertitleNode.getText() : null;\n\t}\n\n\tgetSupertitleNode(): ?TextNode\n\t{\n\t\treturn this.supertitle !== null ? this.supertitle: this.getItem().getSupertitleNode();\n\t}\n\n\tsetSupertitle(supertitle: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(supertitle) || Type.isPlainObject(supertitle))\n\t\t{\n\t\t\tthis.supertitle = new TextNode(supertitle);\n\t\t}\n\t\telse if (supertitle === null)\n\t\t{\n\t\t\tthis.supertitle = null;\n\t\t}\n\t}\n\n\tgetCaption(): ?string\n\t{\n\t\tconst caption = this.getCaptionNode();\n\n\t\treturn caption !== null ? caption.getText() : null;\n\t}\n\n\tgetCaptionNode(): ?TextNode\n\t{\n\t\treturn this.caption !== null ? this.caption: this.getItem().getCaptionNode();\n\t}\n\n\tsetCaption(caption: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(caption) || Type.isPlainObject(caption))\n\t\t{\n\t\t\tthis.caption = new TextNode(caption);\n\t\t}\n\t\telse if (caption === null)\n\t\t{\n\t\t\tthis.caption = null;\n\t\t}\n\t}\n\n\tgetCaptionOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.captionOptions[option]))\n\t\t{\n\t\t\treturn this.captionOptions[option];\n\t\t}\n\n\t\treturn this.getItem().getCaptionOption(option);\n\t}\n\n\tsetCaptionOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.captionOptions[option] = value;\n\t\t}\n\t}\n\n\tsetCaptionOptions(options: {[key: string]: any } | null): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setCaptionOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetAvatar(): ?string\n\t{\n\t\treturn this.avatar !== null ? this.avatar : this.getItem().getAvatar();\n\t}\n\n\tsetAvatar(avatar: ?string): void\n\t{\n\t\tif (Type.isString(avatar) || avatar === null)\n\t\t{\n\t\t\tthis.avatar = avatar;\n\t\t}\n\t}\n\n\tgetAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\treturn (\n\t\t\tthis.avatarOptions === null || Type.isUndefined(this.avatarOptions[option])\n\t\t\t\t? this.getItem().getAvatarOption(option)\n\t\t\t\t: this.avatarOptions[option]\n\t\t);\n\t}\n\n\tsetAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.avatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.avatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.avatarOptions[option] = value;\n\t\t}\n\t}\n\n\tsetAvatarOptions(avatarOptions: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(avatarOptions))\n\t\t{\n\t\t\tObject.keys(avatarOptions).forEach((option: string) => {\n\t\t\t\tthis.setAvatarOption(option, avatarOptions[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\treturn this.textColor !== null ? this.textColor : this.getItem().getTextColor();\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t}\n\t}\n\n\tgetLink(): ?string\n\t{\n\t\treturn this.link !== null ? this.getItem().replaceMacros(this.link) : this.getItem().getLink();\n\t}\n\n\tsetLink(link: string): void\n\t{\n\t\tif (Type.isString(link) || link === null)\n\t\t{\n\t\t\tthis.link = link;\n\t\t}\n\t}\n\n\tgetLinkTitle(): ?string\n\t{\n\t\tconst linkTitle = this.getLinkTitleNode();\n\n\t\treturn linkTitle !== null ? linkTitle.getText() : null;\n\t}\n\n\tgetLinkTitleNode(): ?TextNode\n\t{\n\t\treturn this.linkTitle !== null ? this.linkTitle: this.getItem().getLinkTitleNode();\n\t}\n\n\tsetLinkTitle(title: string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(title) || Type.isPlainObject(title))\n\t\t{\n\t\t\tthis.linkTitle = new TextNode(title);\n\t\t}\n\t\telse if (title === null)\n\t\t{\n\t\t\tthis.linkTitle = null;\n\t\t}\n\t}\n\n\tgetBadges(): ItemBadge[]\n\t{\n\t\treturn this.badges !== null ? this.badges : this.getItem().getBadges();\n\t}\n\n\tsetBadges(badges: ?ItemBadgeOptions[]): void\n\t{\n\t\tif (Type.isArray(badges))\n\t\t{\n\t\t\tthis.badges = [];\n\t\t\tbadges.forEach(badge => {\n\t\t\t\tthis.badges.push(new ItemBadge(badge));\n\t\t\t});\n\t\t}\n\t\telse if (badges === null)\n\t\t{\n\t\t\tthis.badges = null;\n\t\t}\n\t}\n\n\tgetBadgesOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.badgesOptions[option]))\n\t\t{\n\t\t\treturn this.badgesOptions[option];\n\t\t}\n\n\t\treturn this.getItem().getBadgesOption(option);\n\t}\n\n\tsetBadgesOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.badgesOptions[option] = value;\n\t\t}\n\t}\n\n\tsetBadgesOptions(options: {[key: string]: any } | null): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setBadgesOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetOuterContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('outer-container', () => {\n\n\t\t\tlet className = '';\n\n\t\t\tif (this.hasChildren() || this.isDynamic())\n\t\t\t{\n\t\t\t\tclassName += ' ui-selector-item-box-has-children';\n\t\t\t\tif (this.getDepthLevel() >= this.getTab().getItemMaxDepth())\n\t\t\t\t{\n\t\t\t\t\tclassName += ' ui-selector-item-box-max-depth';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.getItem().isSelected())\n\t\t\t{\n\t\t\t\tclassName += ' ui-selector-item-box-selected';\n\t\t\t}\n\n\t\t\tif (this.isOpen())\n\t\t\t{\n\t\t\t\tclassName += ' ui-selector-item-box-open';\n\t\t\t}\n\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = `ui-selector-item-box${className}`;\n\t\t\tdiv.appendChild(this.getContainer());\n\t\t\tdiv.appendChild(this.getChildrenContainer());\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetChildrenContainer(): HTMLElement\n\t{\n\t\tif (this.isRoot() && this.getTab())\n\t\t{\n\t\t\treturn this.getTab().getItemsContainer();\n\t\t}\n\n\t\treturn this.cache.remember('children-container', () => {\n\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-children';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item';\n\n\t\t\tEvent.bind(div, 'click', this.handleClick.bind(this))\n\t\t\tEvent.bind(div, 'mouseenter', this.handleMouseEnter.bind(this))\n\t\t\tEvent.bind(div, 'mouseleave', this.handleMouseLeave.bind(this))\n\n\t\t\tdiv.appendChild(this.getAvatarContainer());\n\t\t\tdiv.appendChild(this.getTitlesContainer());\n\t\t\tdiv.appendChild(this.getIndicatorContainer());\n\n\t\t\tif (Type.isStringFilled(this.getLink()))\n\t\t\t{\n\t\t\t\tdiv.appendChild(this.getLinkContainer());\n\t\t\t}\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetAvatarContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('avatar', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-avatar';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetTitlesContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('titles', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-titles';\n\n\t\t\tdiv.appendChild(this.getSupertitleContainer());\n\t\t\tdiv.appendChild(this.getTitleBoxContainer());\n\t\t\tdiv.appendChild(this.getSubtitleContainer());\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetTitleBoxContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title-box', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-title-box';\n\n\t\t\tdiv.appendChild(this.getTitleContainer());\n\t\t\tdiv.appendChild(this.getBadgeContainer());\n\t\t\tdiv.appendChild(this.getCaptionContainer());\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetTitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-title';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetSubtitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('subtitle', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-subtitle';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetSupertitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('supertitle', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-supertitle';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetCaptionContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('caption', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-caption';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetIndicatorContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('indicator', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-indicator';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetBadgeContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('badge', () => {\n\t\t\tconst div = document.createElement('div');\n\t\t\tdiv.className = 'ui-selector-item-badges';\n\n\t\t\treturn div;\n\t\t});\n\t}\n\n\tgetLinkContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('link', () => {\n\t\t\tconst anchor: HTMLAnchorElement = document.createElement('a');\n\t\t\tanchor.className = 'ui-selector-item-link';\n\t\t\tanchor.href = this.getLink();\n\t\t\tanchor.target = '_blank';\n\t\t\tanchor.title = '';\n\n\t\t\tEvent.bind(anchor, 'click', this.handleLinkClick.bind(this));\n\t\t\tanchor.appendChild(this.getLinkTextContainer());\n\n\t\t\treturn anchor;\n\t\t});\n\t}\n\n\tgetLinkTextContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('link-text', () => {\n\t\t\tconst span = document.createElement('span');\n\t\t\tspan.className = 'ui-selector-item-link-text';\n\n\t\t\treturn span;\n\t\t});\n\t}\n\n\tshowLink(): void\n\t{\n\t\tif (Type.isStringFilled(this.getLink()))\n\t\t{\n\t\t\tDom.addClass(this.getLinkContainer(), 'ui-selector-item-link--show');\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tDom.addClass(this.getLinkContainer(), 'ui-selector-item-link--animate');\n\t\t\t\t});\n\t\t\t});\n\n\t\t}\n\t}\n\n\thideLink(): void\n\t{\n\t\tif (Type.isStringFilled(this.getLink()))\n\t\t{\n\t\t\tDom.removeClass(\n\t\t\t\tthis.getLinkContainer(), ['ui-selector-item-link--show', 'ui-selector-item-link--animate']\n\t\t\t);\n\t\t}\n\t}\n\n\tsetHighlights(highlights: MatchField[]): void\n\t{\n\t\tthis.highlights = highlights;\n\t}\n\n\tgetHighlights(): MatchField[]\n\t{\n\t\treturn this.highlights;\n\t}\n\n\thighlight(): void\n\t{\n\t\tthis.getHighlights().forEach(matchField => {\n\t\t\tconst field = matchField.getField();\n\t\t\tconst fieldName = field.getName();\n\n\t\t\tif (field.isCustom())\n\t\t\t{\n\t\t\t\tconst text = this.getItem().getCustomData().get(fieldName);\n\t\t\t\tthis.getSubtitleContainer().innerHTML = Highlighter.mark(text, matchField.getMatches());\n\t\t\t}\n\t\t\telse if (field.getName() === 'title')\n\t\t\t{\n\t\t\t\tthis.getTitleContainer().innerHTML =\n\t\t\t\t\tHighlighter.mark(this.getItem().getTitleNode(), matchField.getMatches())\n\t\t\t\t;\n\t\t\t}\n\t\t\telse if (field.getName() === 'subtitle')\n\t\t\t{\n\t\t\t\tthis.getSubtitleContainer().innerHTML =\n\t\t\t\t\tHighlighter.mark(this.getItem().getSubtitleNode(), matchField.getMatches())\n\t\t\t\t;\n\t\t\t}\n\t\t\telse if (field.getName() === 'supertitle')\n\t\t\t{\n\t\t\t\tthis.getSupertitleContainer().innerHTML =\n\t\t\t\t\tHighlighter.mark(this.getItem().getSupertitleNode(), matchField.getMatches())\n\t\t\t\t;\n\t\t\t}\n\t\t\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 <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used to compose unicode character classes. */\nconst rsAstralRange = '\\\\ud800-\\\\udfff';\nconst rsComboMarksRange = '\\\\u0300-\\\\u036f';\nconst reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f';\nconst rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff';\nconst rsComboMarksExtendedRange = '\\\\u1ab0-\\\\u1aff';\nconst rsComboMarksSupplementRange = '\\\\u1dc0-\\\\u1dff';\nconst rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange;\nconst rsDingbatRange = '\\\\u2700-\\\\u27bf';\nconst rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff';\nconst rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7';\nconst rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf';\nconst rsPunctuationRange = '\\\\u2000-\\\\u206f';\nconst rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000';\nconst rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde';\nconst rsVarRange = '\\\\ufe0e\\\\ufe0f';\nconst rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nconst rsApos = '[\\'\\u2019]';\nconst rsBreak = `[${rsBreakRange}]`;\nconst rsCombo = `[${rsComboRange}]`;\nconst rsDigit = '\\\\d';\nconst rsDingbat = `[${rsDingbatRange}]`;\nconst rsLower = `[${rsLowerRange}]`;\nconst rsMisc = `[^${rsAstralRange}${rsBreakRange + rsDigit + rsDingbatRange + rsLowerRange + rsUpperRange}]`;\nconst rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]';\nconst rsModifier = `(?:${rsCombo}|${rsFitz})`;\nconst rsNonAstral = `[^${rsAstralRange}]`;\nconst rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}';\nconst rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]';\nconst rsUpper = `[${rsUpperRange}]`;\nconst rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nconst rsMiscLower = `(?:${rsLower}|${rsMisc})`;\nconst rsMiscUpper = `(?:${rsUpper}|${rsMisc})`;\nconst rsOptContrLower = `(?:${rsApos}(?:d|ll|m|re|s|t|ve))?`;\nconst rsOptContrUpper = `(?:${rsApos}(?:D|LL|M|RE|S|T|VE))?`;\nconst reOptMod = `${rsModifier}?`;\nconst rsOptVar = `[${rsVarRange}]?`;\nconst rsOptJoin = `(?:${rsZWJ}(?:${[rsNonAstral, rsRegional, rsSurrPair].join('|')})${rsOptVar + reOptMod})*`;\nconst rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])';\nconst rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])';\nconst rsSeq = rsOptVar + reOptMod + rsOptJoin;\nconst rsEmoji = `(?:${[rsDingbat, rsRegional, rsSurrPair].join('|')})${rsSeq}`;\n\nconst unicodeWordsRegExp = new RegExp([\n\t`${rsUpper}?${rsLower}+${rsOptContrLower}(?=${[rsBreak, rsUpper, '$'].join('|')})`,\n\t`${rsMiscUpper}+${rsOptContrUpper}(?=${[rsBreak, rsUpper + rsMiscLower, '$'].join('|')})`,\n\t`${rsUpper}?${rsMiscLower}+${rsOptContrLower}`,\n\t`${rsUpper}+${rsOptContrUpper}`,\n\trsOrdUpper,\n\trsOrdLower,\n\t`${rsDigit}+`,\n\trsEmoji\n].join('|'), 'g');\n\nexport default unicodeWordsRegExp;","import { Type } from 'main.core';\n\nimport SearchFieldIndex from './search-field-index';\nimport WordIndex from './word-index';\n\nimport type Item from '../item/item';\nimport type SearchField from './search-field';\n\nimport unicodeWordsRegExp from './unicode-words';\nconst asciiWordRegExp = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\nconst hasUnicodeWordRegExp = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\nconst nonWhitespaceRegExp = /[^\\s]+/g;\nconst specialChars = `!\"#$%&'()*+,-.\\/:;<=>?@[\\\\]^_\\`{|}`;\nconst specialCharsRegExp = new RegExp(`[${specialChars}]`);\n\nexport default class SearchIndex\n{\n\tindexes: SearchFieldIndex[] = [];\n\n\tconstructor()\n\t{\n\t}\n\n\taddIndex(fieldIndex: SearchFieldIndex)\n\t{\n\t\tif (Type.isObject(fieldIndex))\n\t\t{\n\t\t\tthis.getIndexes().push(fieldIndex);\n\t\t}\n\t}\n\n\tgetIndexes()\n\t{\n\t\treturn this.indexes;\n\t}\n\n\tstatic create(item: Item)\n\t{\n\t\tconst index = new SearchIndex();\n\t\tconst entity = item.getEntity();\n\n\t\tif (!item.isSearchable() || !entity.isSearchable() || item.isHidden())\n\t\t{\n\t\t\treturn index;\n\t\t}\n\n\t\tconst searchFields = entity.getSearchFields();\n\t\tsearchFields.forEach(field => {\n\t\t\tif (!field.isSearchable())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (field.isSystem())\n\t\t\t{\n\t\t\t\tif (field.getName() === 'title')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getTitleNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getTitle(), stripTags));\n\t\t\t\t}\n\t\t\t\telse if (field.getName() === 'subtitle')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getSubtitleNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getSubtitle(), stripTags));\n\t\t\t\t}\n\t\t\t\telse if (field.getName() === 'supertitle')\n\t\t\t\t{\n\t\t\t\t\tconst textNode = item.getSupertitleNode();\n\t\t\t\t\tconst stripTags = textNode !== null && textNode.getType() === 'html';\n\t\t\t\t\tindex.addIndex(this.createIndex(field, item.getSupertitle(), stripTags));\n\t\t\t\t}\n\t\t\t\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<SearchField> = null;\n\tdynamicLoad: boolean = false;\n\tdynamicSearch: boolean = false;\n\tsubstituteEntityId: string = null;\n\tsearchCacheLimits: RegExp[] = [];\n\tfilters: Map<string, EntityFilter> = new Map();\n\n\titemOptions: { [key: string]: any } = {};\n\ttagOptions: { [key: string]: any } = {};\n\tbadgeOptions: ItemBadgeOptions[] = [];\n\ttextNodes: Map<string, Map<string, TextNode>> = new Map();\n\n\tconstructor(entityOptions: EntityOptions)\n\t{\n\t\tlet options: EntityOptions = Type.isPlainObject(entityOptions) ? entityOptions : {};\n\t\tif (!Type.isStringFilled(options.id))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Entity: \"id\" parameter is required.');\n\t\t}\n\n\t\tconst defaultOptions = this.constructor.getEntityDefaultOptions(options.id) || {};\n\t\toptions = Runtime.merge(JSON.parse(JSON.stringify(defaultOptions)), options);\n\n\t\tthis.id = options.id.toLowerCase();\n\t\tthis.options = Type.isPlainObject(options.options) ? options.options : {};\n\t\tthis.itemOptions = Type.isPlainObject(options.itemOptions) ? options.itemOptions : {};\n\t\tthis.tagOptions = Type.isPlainObject(options.tagOptions) ? options.tagOptions : {};\n\t\tthis.badgeOptions = Type.isArray(options.badgeOptions) ? options.badgeOptions : [];\n\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<SearchField>\n\t{\n\t\treturn this.searchFields;\n\t}\n\n\tsetSearchFields(searchFields: SearchFieldOptions[]): void\n\t{\n\t\tthis.searchFields.clear();\n\n\t\t// Default Search Fields\n\t\tconst titleField = new SearchField({ name: 'title', searchable: true, system: true, type: 'string' });\n\t\tconst subtitleField = new SearchField({ name: 'subtitle', searchable: true, system: true, type: 'string' });\n\t\tthis.searchFields.add(titleField);\n\t\tthis.searchFields.add(subtitleField);\n\n\t\t// Custom Search Fields\n\t\tconst customFields = Type.isArray(searchFields) ? searchFields : [];\n\t\tcustomFields.forEach(fieldOptions => {\n\t\t\tconst field = new SearchField(fieldOptions);\n\t\t\tif (field.isSystem()) // Entity can override default fields.\n\t\t\t{\n\t\t\t\t// delete a default title field\n\t\t\t\tif (field.getName() === 'title')\n\t\t\t\t{\n\t\t\t\t\tthis.searchFields.delete(titleField);\n\t\t\t\t}\n\t\t\t\telse if (field.getName() === 'subtitle')\n\t\t\t\t{\n\t\t\t\t\tthis.searchFields.delete(subtitleField);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.searchFields.add(field);\n\t\t});\n\n\t\tthis.searchFields.forEach((field: SearchField, index: number) => {\n\t\t\tfield.setSort(index);\n\t\t});\n\t}\n\n\tsetSearchCacheLimits(limits: string[]): void\n\t{\n\t\tif (Type.isArrayFilled(limits))\n\t\t{\n\t\t\tlimits.forEach((limit: string) => {\n\t\t\t\tif (Type.isStringFilled(limit))\n\t\t\t\t{\n\t\t\t\t\tthis.searchCacheLimits.push(new RegExp(limit, 'i'));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetSearchCacheLimits(): RegExp[]\n\t{\n\t\treturn this.searchCacheLimits;\n\t}\n\n\thasDynamicLoad(): boolean\n\t{\n\t\treturn this.dynamicLoad;\n\t}\n\n\tsetDynamicLoad(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.dynamicLoad = flag;\n\t\t}\n\t}\n\n\thasDynamicSearch(): boolean\n\t{\n\t\treturn this.dynamicSearch;\n\t}\n\n\tsetDynamicSearch(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.dynamicSearch = flag;\n\t\t}\n\t}\n\n\tgetFilters(): EntityFilter[]\n\t{\n\t\treturn Array.from(this.filters.values());\n\t}\n\n\taddFilters(filters: EntityFilterOptions[]): void\n\t{\n\t\tif (Type.isArray(filters))\n\t\t{\n\t\t\tfilters.forEach((filterOptions: EntityFilterOptions) => {\n\t\t\t\tthis.addFilter(filterOptions);\n\t\t\t});\n\t\t}\n\t}\n\n\taddFilter(filterOptions: EntityFilterOptions): void\n\t{\n\t\tif (Type.isPlainObject(filterOptions))\n\t\t{\n\t\t\tconst filter = new EntityFilter(filterOptions);\n\t\t\tthis.filters.set(filter.getId(), filter);\n\t\t}\n\t}\n\n\tgetFilter(id: string): ?Filter\n\t{\n\t\treturn this.filters.get(id) || null;\n\t}\n\n\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<string, any> = null;\n\tbadges: ItemBadgeOptions[] = null;\n\tbadgesOptions: BadgesOptions = {};\n\n\tdialog: Dialog = null;\n\tnodes: Set<ItemNode> = new Set();\n\tselected: boolean = false;\n\tsearchable: boolean = true;\n\tsaveable: boolean = true;\n\tdeselectable: boolean = true;\n\thidden: boolean = false;\n\tsearchIndex: { [key: string]: string[] } = null;\n\tcustomData: Map<string, any> = null;\n\n\tsort: number = null;\n\tcontextSort: number = null;\n\tglobalSort: number = null;\n\n\tconstructor(itemOptions: ItemOptions)\n\t{\n\t\tconst options: ItemOptions = Type.isPlainObject(itemOptions) ? itemOptions : {};\n\t\tif (!Type.isStringFilled(options.id) && !Type.isNumber(options.id))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Item: \"id\" parameter is required.');\n\t\t}\n\n\t\tif (!Type.isStringFilled(options.entityId))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Item: \"entityId\" parameter is required.');\n\t\t}\n\n\t\tthis.id = options.id;\n\t\tthis.entityId = options.entityId.toLowerCase();\n\t\tthis.entityType = Type.isStringFilled(options.entityType) ? options.entityType : 'default';\n\t\tthis.selected = Type.isBoolean(options.selected) ? options.selected : false;\n\n\t\tthis.customData = TypeUtils.createMapFromOptions(options.customData);\n\t\tthis.tagOptions = TypeUtils.createMapFromOptions(options.tagOptions);\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setSubtitle(options.subtitle);\n\t\tthis.setSupertitle(options.supertitle);\n\t\tthis.setCaption(options.caption);\n\t\tthis.setCaptionOptions(options.captionOptions);\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setLink(options.link);\n\t\tthis.setLinkTitle(options.linkTitle);\n\t\tthis.setBadges(options.badges);\n\t\tthis.setBadgesOptions(options.badgesOptions);\n\n\t\tthis.setSearchable(options.searchable);\n\t\tthis.setSaveable(options.saveable);\n\t\tthis.setDeselectable(options.deselectable);\n\t\tthis.setHidden(options.hidden);\n\t\tthis.setContextSort(options.contextSort);\n\t\tthis.setGlobalSort(options.globalSort);\n\t\tthis.setSort(options.sort);\n\t}\n\n\tgetId(): string | number\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetEntityId(): string\n\t{\n\t\treturn this.entityId;\n\t}\n\n\tgetEntity(): Entity\n\t{\n\t\tlet entity = this.getDialog().getEntity(this.getEntityId());\n\t\tif (entity === null)\n\t\t{\n\t\t\tentity = new Entity({ id: this.getEntityId() });\n\t\t\tthis.getDialog().addEntity(entity);\n\t\t}\n\n\t\treturn entity;\n\t}\n\n\tgetEntityType(): string\n\t{\n\t\treturn this.entityType;\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null && !titleNode.isNullable() ? titleNode.getText() : '';\n\t}\n\n\tgetTitleNode(): ?TextNode\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetTitle(title: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetSubtitle(): ?string\n\t{\n\t\tconst subtitleNode = this.getSubtitleNode();\n\n\t\treturn subtitleNode !== null ? subtitleNode.getText() : null;\n\t}\n\n\tgetSubtitleNode(): ?TextNode\n\t{\n\t\treturn this.subtitle !== null ? this.subtitle : this.getEntityTextNode('subtitle');\n\t}\n\n\tsetSubtitle(subtitle: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(subtitle) || Type.isPlainObject(subtitle) || subtitle === null)\n\t\t{\n\t\t\tthis.subtitle = subtitle === null ? null : new TextNode(subtitle);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetSupertitle(): ?string\n\t{\n\t\tconst supertitleNode = this.getSupertitleNode();\n\n\t\treturn supertitleNode !== null ? supertitleNode.getText() : null;\n\t}\n\n\tgetSupertitleNode(): ?TextNode\n\t{\n\t\treturn this.supertitle !== null ? this.supertitle : this.getEntityTextNode('supertitle');\n\t}\n\n\tsetSupertitle(supertitle: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(supertitle) || Type.isPlainObject(supertitle) || supertitle === null)\n\t\t{\n\t\t\tthis.supertitle = supertitle === null ? null : new TextNode(supertitle);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetCaption(): ?string\n\t{\n\t\tconst captionNode = this.getCaptionNode();\n\n\t\treturn captionNode !== null ? captionNode.getText() : null;\n\t}\n\n\tgetCaptionNode(): ?TextNode\n\t{\n\t\treturn this.caption !== null ? this.caption : this.getEntityTextNode('caption');\n\t}\n\n\tsetCaption(caption: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(caption) || Type.isPlainObject(caption) || caption === null)\n\t\t{\n\t\t\tthis.caption = caption === null ? null : new TextNode(caption);\n\n\t\t\tthis.resetSearchIndex();\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetCaptionOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.captionOptions[option]))\n\t\t{\n\t\t\treturn this.captionOptions[option];\n\t\t}\n\n\t\tconst captionOptions = this.getEntityItemOption('captionOptions');\n\t\tif (Type.isPlainObject(captionOptions) && !Type.isUndefined(captionOptions[option]))\n\t\t{\n\t\t\treturn captionOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetCaptionOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.captionOptions[option] = value;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tsetCaptionOptions(options: {[key: string]: any }): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setCaptionOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetAvatar(): ?string\n\t{\n\t\treturn this.avatar !== null ? this.avatar : this.getEntityItemOption('avatar');\n\t}\n\n\tsetAvatar(avatar: ?string): void\n\t{\n\t\tif (Type.isString(avatar) || avatar === null)\n\t\t{\n\t\t\tthis.avatar = avatar;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\tif (this.avatarOptions !== null && !Type.isUndefined(this.avatarOptions[option]))\n\t\t{\n\t\t\treturn this.avatarOptions[option];\n\t\t}\n\n\t\tconst avatarOptions = this.getEntityItemOption('avatarOptions');\n\t\tif (Type.isPlainObject(avatarOptions) && !Type.isUndefined(avatarOptions[option]))\n\t\t{\n\t\t\treturn avatarOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.avatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.avatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.avatarOptions[option] = value;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tsetAvatarOptions(options: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setAvatarOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\treturn this.textColor !== null ? this.textColor : this.getEntityItemOption('textColor');\n\t}\n\n\tsetTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.textColor = textColor;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetLink(): ?string\n\t{\n\t\tconst link = this.link !== null ? this.link : this.getEntityItemOption('link');\n\n\t\treturn this.replaceMacros(link);\n\t}\n\n\tsetLink(link: ?string): void\n\t{\n\t\tif (Type.isString(link) || link === null)\n\t\t{\n\t\t\tthis.link = link;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetLinkTitle(): ?string\n\t{\n\t\tconst linkTitleNode = this.getLinkTitleNode();\n\n\t\treturn linkTitleNode !== null ? linkTitleNode.getText() : Loc.getMessage('UI_SELECTOR_ITEM_LINK_TITLE');\n\t}\n\n\tgetLinkTitleNode(): ?TextNode\n\t{\n\t\treturn this.linkTitle !== null ? this.linkTitle : this.getEntityTextNode('linkTitle');\n\t}\n\n\tsetLinkTitle(linkTitle: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isString(linkTitle) || Type.isPlainObject(linkTitle) || linkTitle === null)\n\t\t{\n\t\t\tthis.linkTitle = linkTitle === null ? null : new TextNode(linkTitle);\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetBadges(): ItemBadge[]\n\t{\n\t\tif (this.badges !== null)\n\t\t{\n\t\t\treturn this.badges;\n\t\t}\n\n\t\tconst badges = this.getEntity().getBadges(this);\n\t\tif (Type.isArray(badges))\n\t\t{\n\t\t\tthis.setBadges(badges);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.badges = [];\n\t\t}\n\n\t\treturn this.badges;\n\t}\n\n\tsetBadges(badges: ?ItemBadgeOptions[]): void\n\t{\n\t\tif (Type.isArray(badges))\n\t\t{\n\t\t\tthis.badges = [];\n\t\t\tbadges.forEach(badge => {\n\t\t\t\tthis.badges.push(new ItemBadge(badge));\n\t\t\t});\n\n\t\t\tthis.#renderNodes();\n\t\t}\n\t\telse if (badges === null)\n\t\t{\n\t\t\tthis.badges = null;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tgetBadgesOption(option: string): string | boolean | number | null\n\t{\n\t\tif (!Type.isUndefined(this.badgesOptions[option]))\n\t\t{\n\t\t\treturn this.badgesOptions[option];\n\t\t}\n\n\t\tconst badgesOptions = this.getEntityItemOption('badgesOptions');\n\t\tif (Type.isPlainObject(badgesOptions) && !Type.isUndefined(badgesOptions[option]))\n\t\t{\n\t\t\treturn badgesOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetBadgesOption(option: string, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tthis.badgesOptions[option] = value;\n\t\t\tthis.#renderNodes();\n\t\t}\n\t}\n\n\tsetBadgesOptions(options: {[key: string]: any }): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setBadgesOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetDialog(dialog: Dialog): void\n\t{\n\t\tthis.dialog = dialog;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tcreateNode(nodeOptions: ItemNodeOptions): ItemNode\n\t{\n\t\tconst itemNode = new ItemNode(this, nodeOptions);\n\t\tthis.nodes.add(itemNode);\n\n\t\treturn itemNode;\n\t}\n\n\tremoveNode(node: ItemNode): void\n\t{\n\t\tthis.nodes.delete(node);\n\t}\n\n\tgetNodes(): Set<ItemNode>\n\t{\n\t\treturn this.nodes;\n\t}\n\n\tselect(preselectedMode: boolean = false): void\n\t{\n\t\tif (this.selected)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst dialog = this.getDialog();\n\t\tconst emitEvents = dialog && !preselectedMode;\n\n\t\tif (emitEvents)\n\t\t{\n\t\t\tconst event = new BaseEvent({ data: { item: this } });\n\t\t\tdialog.emit('Item:onBeforeSelect', event);\n\t\t\tif (event.isDefaultPrevented())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.selected = true;\n\n\t\tif (dialog)\n\t\t{\n\t\t\tdialog.handleItemSelect(this, !preselectedMode);\n\t\t}\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.select();\n\t\t\t});\n\t\t}\n\n\t\tif (emitEvents)\n\t\t{\n\t\t\tdialog.emit('Item:onSelect', { item: this });\n\t\t\tdialog.saveRecentItem(this);\n\t\t}\n\t}\n\n\tdeselect(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\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, !preselectedMode);\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<string, any>\n\t{\n\t\treturn this.customData;\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.getDialog() && this.getDialog().isRendered();\n\t}\n\n\t#renderNodes(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.render();\n\t\t\t});\n\t\t}\n\t}\n\n\tgetEntityItemOption(option): any\n\t{\n\t\treturn this.getEntity().getItemOption(option, this.getEntityType());\n\t}\n\n\tgetEntityTagOption(option): any\n\t{\n\t\treturn this.getEntity().getTagOption(option, this.getEntityType());\n\t}\n\n\tgetEntityTextNode(option): any\n\t{\n\t\treturn this.getEntity().getOptionTextNode(option, this.getEntityType());\n\t}\n\n\tgetTagOptions(): Map<string, any>\n\t{\n\t\treturn this.tagOptions;\n\t}\n\n\tgetTagOption(option: string): any\n\t{\n\t\tconst value = this.getTagOptions().get(option);\n\n\t\tif (!Type.isUndefined(value))\n\t\t{\n\t\t\treturn value;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetTagGlobalOption(option: string, useItemOptions: boolean = false): any\n\t{\n\t\tif (!Type.isStringFilled(option))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet value = this.getTagOption(option);\n\n\t\tif (value === null && useItemOptions === true && this[option] !== null)\n\t\t{\n\t\t\tvalue = this[option];\n\t\t}\n\n\t\tif (value === null && this.getDialog().getTagSelector())\n\t\t{\n\t\t\tconst fn = `getTag${Text.toPascalCase(option)}`;\n\t\t\tif (Type.isFunction(this.getDialog().getTagSelector()[fn]))\n\t\t\t{\n\t\t\t\tvalue = this.getDialog().getTagSelector()[fn]();\n\t\t\t}\n\t\t}\n\n\t\tif (value === null)\n\t\t{\n\t\t\tvalue = this.getEntityTagOption(option);\n\t\t}\n\n\t\tif (value === null && useItemOptions === true)\n\t\t{\n\t\t\tvalue = this.getEntityItemOption(option);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tgetTagBgColor(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('bgColor');\n\t}\n\n\tgetTagTextColor(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('textColor');\n\t}\n\n\tgetTagMaxWidth(): ?number\n\t{\n\t\treturn this.getTagGlobalOption('maxWidth');\n\t}\n\n\tgetTagFontWeight(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('fontWeight');\n\t}\n\n\tgetTagAvatar(): ?string\n\t{\n\t\treturn this.getTagGlobalOption('avatar', true);\n\t}\n\n\tgetTagAvatarOptions(): ?AvatarOptions\n\t{\n\t\treturn this.getTagGlobalOption('avatarOptions', true);\n\t}\n\n\tgetTagLink(): ?string\n\t{\n\t\treturn this.replaceMacros(this.getTagGlobalOption('link', true));\n\t}\n\n\t/**\n\t * @internal\n\t */\n\treplaceMacros(str: string): string\n\t{\n\t\tif (!Type.isStringFilled(str))\n\t\t{\n\t\t\treturn str;\n\t\t}\n\n\t\treturn (\n\t\t\tstr\n\t\t\t\t.replace(/#id#/i, this.getId())\n\t\t\t\t.replace(/#element_id#/i, this.getId())\n\t\t);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tcreateTag(): TagItemOptions\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tentityId: this.getEntityId(),\n\t\t\tentityType: this.getEntityType(),\n\t\t\ttitle: this.getTagOption('title') || (this.getTitleNode() && this.getTitleNode().toJSON()) || '',\n\t\t\tdeselectable: this.isDeselectable(),\n\t\t\tavatar: this.getTagAvatar(),\n\t\t\tavatarOptions: this.getTagAvatarOptions(),\n\t\t\tlink: this.getTagLink(),\n\t\t\tmaxWidth: this.getTagMaxWidth(),\n\t\t\ttextColor: this.getTagTextColor(),\n\t\t\tbgColor: this.getTagBgColor(),\n\t\t\tfontWeight: this.getTagFontWeight(),\n\t\t\tonclick: this.getTagOption('onclick'),\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}\n","import { Cache, Dom, Tag, Type } from 'main.core';\nimport type Tab from '../tabs/tab';\n\nexport default class BaseStub\n{\n\ttab: Tab = null;\n\tautoShow: boolean = true;\n\tcache = new Cache.MemoryCache();\n\tcontent: HTMLElement = null;\n\n\tconstructor(tab: Tab, options: { [option: string]: any })\n\t{\n\t\tthis.options = Type.isPlainObject(options) ? options : {};\n\t\tthis.tab = tab;\n\t\tthis.autoShow = this.getOption('autoShow', true);\n\t}\n\n\t/**\n\t * @abstract\n\t */\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('You must implement render() method.');\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetOuterContainer()\n\t{\n\t\treturn this.cache.remember('outer-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-stub\">${this.render()}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tisAutoShow(): boolean\n\t{\n\t\treturn this.autoShow;\n\t}\n\n\tshow(): void\n\t{\n\t\tDom.append(this.getOuterContainer(), this.getTab().getContainer());\n\t\t/*requestAnimationFrame(() => {\n\t\t\tDom.addClass(this.getOuterContainer(), 'ui-selector-tab-stub--show');\n\t\t});*/\n\t}\n\n\thide(): void\n\t{\n\t\t// Dom.removeClass(this.getOuterContainer(), 'ui-selector-tab-stub--show');\n\t\tDom.remove(this.getOuterContainer());\n\t}\n\n\tgetOptions(): { [option: string]: any }\n\t{\n\t\treturn this.options;\n\t}\n\n\tgetOption(option: string, defaultValue?: any): any\n\t{\n\t\tif (!Type.isUndefined(this.options[option]))\n\t\t{\n\t\t\treturn this.options[option];\n\t\t}\n\t\telse if (!Type.isUndefined(defaultValue))\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn null;\n\t}\n}","import { Tag, Type, Loc } from 'main.core';\nimport type Tab from '../tabs/tab';\nimport BaseStub from './base-stub';\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<div class=\"ui-selector-tab-default-stub\">\n\t\t\t\t\t<div class=\"ui-selector-tab-default-stub-icon\" ${iconStyle}></div>\n\t\t\t\t\t<div class=\"ui-selector-tab-default-stub-titles\">\n\t\t\t\t\t\t<div class=\"ui-selector-tab-default-stub-title\">${title}</div>\n\t\t\t\t\t\t${\n\t\t\t\tsubtitle ?\n\t\t\t\t\tTag.render`<div class=\"ui-selector-tab-default-stub-subtitle\">${subtitle}</div>`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t${arrow ? Tag.render`<div class=\"ui-selector-tab-default-stub-arrow\"></div>` : ''}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetDefaultTitle(): string\n\t{\n\t\tconst titleNode = this.getTab().getTitleNode();\n\t\tif (titleNode === null)\n\t\t{\n\t\t\treturn Loc.getMessage('UI_SELECTOR_TAB_STUB_TITLE').replace(/#TAB_TITLE#/, '');\n\t\t}\n\n\t\tconst titleContainer = Tag.render`<span class=\"ui-selector-tab-default-stub-title\"></span>`;\n\t\ttitleNode.renderTo(titleContainer);\n\n\t\treturn Loc.getMessage('UI_SELECTOR_TAB_STUB_TITLE').replace(/#TAB_TITLE#/, titleContainer.innerHTML);\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\treturn this.getContainer();\n\t}\n}\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<div class=\"ui-selector-header\">${this.render()}</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\t/**\n\t * @abstract\n\t */\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('You must implement render() method.');\n\t}\n}","import { 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<div class=\"ui-selector-footer\">${this.render()}</div>\n\t\t\t`;\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\t/**\n\t * @abstract\n\t */\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('You must implement render() method.');\n\t}\n}","import { Type, Tag, Dom, Cache, Reflection } from 'main.core';\nimport ItemNode from '../../item/item-node';\nimport Dialog from '../dialog';\nimport BaseStub from './base-stub';\nimport DefaultStub from './default-stub';\nimport BaseHeader from '../header/base-header';\nimport BaseFooter from '../footer/base-footer';\nimport TextNode from '../../common/text-node';\nimport encodeUrl from '../../common/encode-url';\n\nimport type { TabLabelState, TabLabelStates, TabOptions } from './tab-options';\nimport type { HeaderContent, HeaderOptions } from '../header/header-content';\nimport type { FooterContent, FooterOptions } from '../footer/footer-content';\nimport type { TextNodeOptions } from '../../common/text-node-options';\n\n/**\n * @memberof BX.UI.EntitySelector\n */\nexport default class Tab\n{\n\tid: string = null;\n\ttitle: ?TextNode = null;\n\trootNode: ItemNode = null;\n\n\tdialog: Dialog = null;\n\tstub: BaseStub = null;\n\n\tvisible: boolean = true;\n\trendered: boolean = false;\n\tlocked: boolean = false;\n\tselected: boolean = false;\n\thovered: boolean = false;\n\n\ticon: TabLabelStates = {};\n\ttextColor: TabLabelStates = {};\n\tbgColor: TabLabelStates = {};\n\n\titemMaxDepth: number = 5;\n\n\theader: BaseHeader = null;\n\tshowDefaultHeader = true;\n\tfooter: BaseFooter = null;\n\tshowDefaultFooter = true;\n\tshowAvatars: ?boolean = null;\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(dialog: Dialog, tabOptions: TabOptions)\n\t{\n\t\tconst options: TabOptions = Type.isPlainObject(tabOptions) ? tabOptions : {};\n\n\t\tif (!Type.isStringFilled(options.id))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.Tab: \"id\" parameter is required.');\n\t\t}\n\n\t\tthis.setDialog(dialog);\n\t\tthis.id = options.id;\n\t\tthis.showDefaultHeader = options.showDefaultHeader !== false;\n\t\tthis.showDefaultFooter = options.showDefaultFooter !== false;\n\n\t\tthis.rootNode = new ItemNode(null, { itemOrder: options.itemOrder });\n\t\tthis.rootNode.setTab(this);\n\n\t\tthis.setVisible(options.visible);\n\t\tthis.setTitle(options.title);\n\t\tthis.setItemMaxDepth(options.itemMaxDepth);\n\t\tthis.setIcon(options.icon);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setBgColor(options.bgColor);\n\t\tthis.setStub(options.stub, options.stubOptions);\n\t\tthis.setHeader(options.header, options.headerOptions);\n\t\tthis.setFooter(options.footer, options.footerOptions);\n\t\tthis.setShowAvatars(options.showAvatars);\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetDialog(dialog: Dialog): void\n\t{\n\t\tthis.dialog = dialog;\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tgetStub(): ?BaseStub\n\t{\n\t\treturn this.stub;\n\t}\n\n\tsetStub(stub?: boolean | string | Function, stubOptions?: { [option: string]: any }): void\n\t{\n\t\tlet instance = null;\n\t\tconst options = Type.isPlainObject(stubOptions) ? stubOptions : {};\n\n\t\tif (Type.isString(stub) || Type.isFunction(stub))\n\t\t{\n\t\t\tconst className = Type.isString(stub) ? Reflection.getClass(stub) : stub;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\tinstance = new className(this, options);\n\t\t\t\tif (!(instance instanceof BaseStub))\n\t\t\t\t{\n\t\t\t\t\tconsole.error('EntitySelector: stub is not an instance of BaseStub.');\n\t\t\t\t\tinstance = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!instance && stub !== false)\n\t\t{\n\t\t\tinstance = new DefaultStub(this, options);\n\t\t}\n\n\t\tthis.stub = instance;\n\t}\n\n\tgetHeader(): ?BaseHeader\n\t{\n\t\treturn this.header;\n\t}\n\n\tsetHeader(headerContent: ?HeaderContent, headerOptions?: HeaderOptions)\n\t{\n\t\t/** @var {BaseHeader} */\n\t\tlet header = null;\n\t\tif (headerContent !== null)\n\t\t{\n\t\t\theader = Dialog.createHeader(this, headerContent, headerOptions);\n\t\t\tif (header === null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getHeader() !== null)\n\t\t{\n\t\t\tDom.remove(this.getHeader().getContainer());\n\t\t\tthis.getDialog().adjustHeader();\n\t\t}\n\n\t\tthis.header = header;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getDialog().appendHeader(header);\n\t\t\tthis.getDialog().adjustHeader();\n\t\t}\n\t}\n\n\tcanShowDefaultHeader(): boolean\n\t{\n\t\treturn this.showDefaultHeader;\n\t}\n\n\tenableDefaultHeader(): void\n\t{\n\t\tthis.showDefaultHeader = true;\n\t\tthis.getDialog().adjustHeader();\n\t}\n\n\tdisableDefaultHeader(): void\n\t{\n\t\tthis.showDefaultHeader = false;\n\t\tthis.getDialog().adjustHeader();\n\t}\n\n\tgetFooter(): ?BaseFooter\n\t{\n\t\treturn this.footer;\n\t}\n\n\tsetFooter(footerContent: ?FooterContent, footerOptions?: FooterOptions)\n\t{\n\t\t/** @var {BaseFooter} */\n\t\tlet footer = null;\n\t\tif (footerContent !== null)\n\t\t{\n\t\t\tfooter = Dialog.createFooter(this, footerContent, footerOptions);\n\t\t\tif (footer === null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getFooter() !== null)\n\t\t{\n\t\t\tDom.remove(this.getFooter().getContainer());\n\t\t\tthis.getDialog().adjustFooter();\n\t\t}\n\n\t\tthis.footer = footer;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getDialog().appendFooter(footer);\n\t\t\tthis.getDialog().adjustFooter();\n\t\t}\n\t}\n\n\tcanShowDefaultFooter(): boolean\n\t{\n\t\treturn this.showDefaultFooter;\n\t}\n\n\tenableDefaultFooter(): void\n\t{\n\t\tthis.showDefaultFooter = true;\n\t\tthis.getDialog().adjustFooter();\n\t}\n\n\tdisableDefaultFooter(): void\n\t{\n\t\tthis.showDefaultFooter = false;\n\t\tthis.getDialog().adjustFooter();\n\t}\n\n\tsetShowAvatars(flag: ?boolean): void\n\t{\n\t\tif (Type.isBoolean(flag) || flag === null)\n\t\t{\n\t\t\tthis.showAvatars = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderContainer();\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldShowAvatars(): boolean\n\t{\n\t\treturn this.showAvatars ?? this.getDialog().shouldShowAvatars();\n\t}\n\n\tgetRootNode(): ItemNode\n\t{\n\t\treturn this.rootNode;\n\t}\n\n\tsetTitle(title: ?string | TextNodeOptions): void\n\t{\n\t\tif (Type.isStringFilled(title) || Type.isPlainObject(title) || title === null)\n\t\t{\n\t\t\tthis.title = title === null ? null : new TextNode(title);\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.renderLabel();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetTitle(): string\n\t{\n\t\tconst titleNode = this.getTitleNode();\n\n\t\treturn titleNode !== null && !titleNode.isNullable() ? titleNode.getText() : '';\n\t}\n\n\tgetTitleNode(): TextNode | null\n\t{\n\t\treturn this.title;\n\t}\n\n\tsetIcon(icon: TabLabelStates | string): void\n\t{\n\t\treturn this.setProperty('icon', icon);\n\t}\n\n\tgetIcon(state?: TabLabelState): ?string\n\t{\n\t\treturn this.getPropertyByState('icon', state);\n\t}\n\n\tsetBgColor(bgColor: TabLabelStates | string): void\n\t{\n\t\treturn this.setProperty('bgColor', bgColor);\n\t}\n\n\tgetBgColor(state?: TabLabelState): ?string\n\t{\n\t\treturn this.getPropertyByState('bgColor', state);\n\t}\n\n\tsetTextColor(textColor: TabLabelStates | string): void\n\t{\n\t\treturn this.setProperty('textColor', textColor);\n\t}\n\n\tgetTextColor(state?: TabLabelState): ?string\n\t{\n\t\treturn this.getPropertyByState('textColor', state);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetProperty(name: string, states: TabLabelStates | string): void\n\t{\n\t\tconst property = this[name];\n\t\tif (!property)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isPlainObject(states))\n\t\t{\n\t\t\tObject.keys(states).forEach(state => {\n\t\t\t\tif (Type.isStringFilled(states[state]))\n\t\t\t\t{\n\t\t\t\t\tproperty[state] = states[state];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse if (Type.isStringFilled(states))\n\t\t{\n\t\t\tproperty['default'] = states;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetPropertyByState(name: string, state?: TabLabelState): ?string\n\t{\n\t\tconst property = this[name];\n\t\tconst labelState = Type.isStringFilled(state) ? state : 'default';\n\n\t\tif (!Type.isUndefined(property) && !Type.isUndefined(property[labelState]))\n\t\t{\n\t\t\treturn property[labelState];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetPropertyByCurrentState(name: string): ?string\n\t{\n\t\tconst property = this[name];\n\t\tif (this.isSelected() && this.isHovered() && property.selectedHovered)\n\t\t{\n\t\t\treturn property.selectedHovered;\n\t\t}\n\t\telse if (this.isSelected() && property.selected)\n\t\t{\n\t\t\treturn property.selected;\n\t\t}\n\t\telse if (this.isHovered() && property.hovered)\n\t\t{\n\t\t\treturn property.hovered;\n\t\t}\n\t\telse if (property.default)\n\t\t{\n\t\t\treturn property.default;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetItemMaxDepth(depth: number): void\n\t{\n\t\tif (Type.isNumber(depth) && depth > 0)\n\t\t{\n\t\t\tthis.itemMaxDepth = depth;\n\t\t}\n\t}\n\n\tgetItemMaxDepth(): number\n\t{\n\t\treturn this.itemMaxDepth;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-content\">${this.getItemsContainer()}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetLabelContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('label', () => {\n\t\t\tconst className = this.isVisible() ? '' : ' ui-selector-tab-label-hidden';\n\t\t\treturn Tag.render`\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ui-selector-tab-label${className}\"\n\t\t\t\t\tonclick=\"${this.handleLabelClick.bind(this)}\"\n\t\t\t\t\tonmouseenter=\"${this.handleLabelMouseEnter.bind(this)}\"\n\t\t\t\t\tonmouseleave=\"${this.handleLabelMouseLeave.bind(this)}\"\n\t\t\t\t>\n\t\t\t\t\t${this.getIconContainer()}\n\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetIconContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('icon', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-icon\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tab-title\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetItemsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('items', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-items\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\trender(): void\n\t{\n\t\tthis.getRootNode().render();\n\t\tthis.rendered = true;\n\t}\n\n\t/** @internal **/\n\trenderLabel(): void\n\t{\n\t\tDom.style(this.getTitleContainer(), 'color', this.getPropertyByCurrentState('textColor'));\n\t\tDom.style(this.getLabelContainer(), 'background-color', this.getPropertyByCurrentState('bgColor'));\n\n\t\tconst icon = this.getPropertyByCurrentState('icon');\n\t\tDom.style(this.getIconContainer(), 'background-image', icon ? `url('${encodeUrl(icon)}')` : null);\n\n\t\tconst titleNode = this.getTitleNode();\n\t\tif (titleNode)\n\t\t{\n\t\t\tthis.getTitleNode().renderTo(this.getTitleContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t}\n\t}\n\n\t/** @internal **/\n\trenderContainer(): void\n\t{\n\t\tconst className = 'ui-selector-tab-content--hide-avatars';\n\t\tif (this.shouldShowAvatars())\n\t\t{\n\t\t\tDom.removeClass(this.getContainer(), className);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.getContainer(), className);\n\t\t}\n\t}\n\n\tisVisible(): boolean\n\t{\n\t\treturn this.visible;\n\t}\n\n\tsetVisible(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.visible = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tif (this.visible)\n\t\t\t\t{\n\t\t\t\t\tDom.remove(this.getLabelContainer(), 'ui-selector-tab-label-hidden');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(this.getLabelContainer(), 'ui-selector-tab-label-hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered && this.getDialog() && this.getDialog().isRendered();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tselect(): void\n\t{\n\t\tif (this.isSelected())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getContainer(), 'ui-selector-tab-content-active');\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tDom.addClass(this.getLabelContainer(), 'ui-selector-tab-label-active');\n\t\t\tthis.renderLabel();\n\t\t}\n\n\t\tthis.selected = true;\n\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tthis.renderLabel();\n\t\t}\n\n\t\tif (this.getHeader())\n\t\t{\n\t\t\tthis.getHeader().show();\n\t\t}\n\n\t\tif (this.getFooter())\n\t\t{\n\t\t\tthis.getFooter().show();\n\t\t}\n\n\t\tthis.getDialog().emit('Tab:onSelect', { tab: this });\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tdeselect(): void\n\t{\n\t\tif (!this.isSelected())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-tab-content-active');\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tDom.removeClass(this.getLabelContainer(), 'ui-selector-tab-label-active');\n\t\t}\n\n\t\tthis.selected = false;\n\n\t\tif (this.isVisible())\n\t\t{\n\t\t\tthis.renderLabel();\n\t\t}\n\n\t\tif (this.getHeader())\n\t\t{\n\t\t\tthis.getHeader().hide();\n\t\t}\n\n\t\tif (this.getFooter())\n\t\t{\n\t\t\tthis.getFooter().hide();\n\t\t}\n\n\t\tthis.getDialog().emit('Tab:onDeselect', { tab: this\t});\n\t}\n\n\thover(): void\n\t{\n\t\tif (this.isHovered())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.addClass(this.getLabelContainer(), 'ui-selector-tab-label-hover');\n\t\tthis.hovered = true;\n\n\t\tthis.renderLabel();\n\t}\n\n\tunhover(): void\n\t{\n\t\tif (!this.isHovered())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(this.getLabelContainer(), 'ui-selector-tab-label-hover');\n\t\tthis.hovered = false;\n\n\t\tthis.renderLabel();\n\t}\n\n\tisSelected(): boolean\n\t{\n\t\treturn this.selected;\n\t}\n\n\tisHovered(): boolean\n\t{\n\t\treturn this.hovered;\n\t}\n\n\tlock(): void\n\t{\n\t\tthis.locked = true;\n\t\tDom.addClass(this.getContainer(), 'ui-selector-tab-content-locked');\n\t}\n\n\tunlock(): void\n\t{\n\t\tthis.locked = false;\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-tab-content-locked');\n\t}\n\n\tisLocked(): boolean\n\t{\n\t\treturn this.locked;\n\t}\n\n\thandleLabelClick(): void\n\t{\n\t\tthis.getDialog().selectTab(this.getId());\n\t}\n\n\thandleLabelMouseEnter(): void\n\t{\n\t\tthis.hover();\n\t}\n\n\thandleLabelMouseLeave(): void\n\t{\n\t\tthis.unhover();\n\t}\n}\n","import { BaseError, Type } from 'main.core';\n\n/**\n * @namespace BX.UI.Uploader\n */\nexport default class EntityError extends BaseError\n{\n\t#entityId: string;\n\n\tsetEntityId(entityId: string): void\n\t{\n\t\tif (Type.isStringFilled(entityId))\n\t\t{\n\t\t\tthis.#entityId = entityId;\n\t\t}\n\t}\n\n\tgetEntityId(): string\n\t{\n\t\treturn this.#entityId;\n\t}\n}\n","import { Type } from 'main.core';\nimport EntityError from './entity-error';\nimport type { EntityErrorOptions } from './entity-error-options';\n\n/**\n * @namespace BX.UI.Uploader\n */\nexport default class EntityErrorCollection\n{\n\t#errors: EntityError[] = [];\n\n\tstatic create(errorOptions: EntityErrorOptions[]): this\n\t{\n\t\tconst errorCollection = new this();\n\t\terrorOptions.forEach((errorOption: EntityErrorOptions) => {\n\t\t\tif (!Type.isStringFilled(errorOption.entityId))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst error = new EntityError();\n\t\t\terror.setEntityId(errorOption.entityId);\n\n\t\t\tif (Type.isStringFilled(errorOption.message))\n\t\t\t{\n\t\t\t\terror.setMessage(errorOption.message);\n\t\t\t}\n\n\t\t\tif (!Type.isNil(errorOption.code))\n\t\t\t{\n\t\t\t\terror.setCode(errorOption.code);\n\t\t\t}\n\n\t\t\tif (Type.isArrayFilled(errorOption.customData))\n\t\t\t{\n\t\t\t\terror.setCustomData(errorOption.customData);\n\t\t\t}\n\n\t\t\terrorCollection.add(error);\n\t\t});\n\n\t\treturn errorCollection;\n\t}\n\n\tgetByEntityId(entityId: string): Array\n\t{\n\t\treturn this.#errors.filter((error: EntityError) => error.getEntityId() === entityId);\n\t}\n\n\tadd(item: EntityError): void\n\t{\n\t\tthis.#errors.push(item);\n\t}\n\n\thas(item: EntityError): boolean\n\t{\n\t\treturn this.#errors.includes(item);\n\t}\n\n\tclear(): void\n\t{\n\t\tthis.#errors = [];\n\t}\n\n\tgetIndex(item: EntityError): number\n\t{\n\t\treturn this.#errors.indexOf(item);\n\t}\n\n\tgetByIndex(index: number): ?EntityError\n\t{\n\t\tif (Type.isNumber(index) && index >= 0)\n\t\t{\n\t\t\tconst error = this.#errors[index];\n\n\t\t\treturn Type.isUndefined(error) ? null : error;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t[Symbol.iterator](): IterableIterator<EntityError>\n\t{\n\t\treturn this.#errors[Symbol.iterator]();\n\t}\n}\n","import { Cache, Tag, Type, Dom } from 'main.core';\nimport Entity from '../entity/entity';\nimport TextNode from '../common/text-node';\nimport Animation from '../common/animation';\nimport TypeUtils from '../common/type-utils';\nimport encodeUrl from '../common/encode-url';\n\nimport type TagSelector from './tag-selector';\nimport type { TagItemOptions } from './tag-item-options';\nimport type { TextNodeOptions } from '../common/text-node-options';\nimport type { AvatarOptions } from '../item/avatar-options';\n\nexport default class TagItem\n{\n\tid: string | number = null;\n\tentityId: string = null;\n\tentityType: string = null;\n\ttitle: ?TextNode = null;\n\n\tavatar: ?string = null;\n\tavatarOptions: ?AvatarOptions = null;\n\tmaxWidth: ?number = null;\n\ttextColor: ?string = null;\n\tbgColor: ?string = null;\n\tfontWeight: ?string = null;\n\n\tlink: ?string = null;\n\tonclick: ?Function = null;\n\tclickable: boolean = null;\n\n\tdeselectable: ?boolean = null;\n\tcustomData: Map<string, any> = null;\n\n\tcache = new Cache.MemoryCache();\n\tselector: TagSelector = null;\n\trendered: ?boolean = false;\n\n\tconstructor(itemOptions: TagItemOptions)\n\t{\n\t\tconst options = Type.isPlainObject(itemOptions) ? itemOptions : {};\n\t\tif (!Type.isStringFilled(options.id) && !Type.isNumber(options.id))\n\t\t{\n\t\t\tthrow new Error('TagSelector.TagItem: \"id\" parameter is required.');\n\t\t}\n\n\t\tif (!Type.isStringFilled(options.entityId))\n\t\t{\n\t\t\tthrow new Error('TagSelector.TagItem: \"entityId\" parameter is required.');\n\t\t}\n\n\t\tthis.id = options.id;\n\t\tthis.entityId = options.entityId.toLowerCase();\n\t\tthis.entityType = Type.isStringFilled(options.entityType) ? options.entityType : 'default';\n\t\tthis.customData = TypeUtils.createMapFromOptions(options.customData);\n\n\t\tthis.onclick = Type.isFunction(options.onclick) ? options.onclick : null;\n\t\tthis.link = Type.isStringFilled(options.link) ? options.link : null;\n\n\t\tthis.setTitle(options.title);\n\t\tthis.setDeselectable(options.deselectable);\n\n\t\tthis.setAvatar(options.avatar);\n\t\tthis.setAvatarOptions(options.avatarOptions);\n\t\tthis.setMaxWidth(options.maxWidth);\n\t\tthis.setTextColor(options.textColor);\n\t\tthis.setBgColor(options.bgColor);\n\t\tthis.setFontWeight(options.fontWeight);\n\t\tthis.setClickable(options.clickable);\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\n\t\tif (this.getSelector().getTagAvatar() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagAvatar();\n\t\t}\n\n\t\tif (this.getEntityTagOption('avatar') !== null)\n\t\t{\n\t\t\treturn this.getEntityTagOption('avatar');\n\t\t}\n\n\t\treturn this.getEntityItemOption('avatar');\n\t}\n\n\tsetAvatar(avatar: ?string): void\n\t{\n\t\tif (Type.isString(avatar) || avatar === null)\n\t\t{\n\t\t\tthis.avatar = avatar;\n\t\t}\n\t}\n\n\tgetAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\tif (this.avatarOptions !== null && !Type.isUndefined(this.avatarOptions[option]))\n\t\t{\n\t\t\treturn this.avatarOptions[option];\n\t\t}\n\n\t\tconst selectorAvatarOption = this.getSelector().getTagAvatarOption(option);\n\t\tif (selectorAvatarOption !== null)\n\t\t{\n\t\t\treturn selectorAvatarOption[option];\n\t\t}\n\n\t\tconst entityTagAvatarOptions = this.getEntityTagOption('avatarOptions');\n\t\tif (Type.isPlainObject(entityTagAvatarOptions) && !Type.isUndefined(entityTagAvatarOptions[option]))\n\t\t{\n\t\t\treturn entityTagAvatarOptions[option];\n\t\t}\n\n\t\tconst entityItemAvatarOptions = this.getEntityItemOption('avatarOptions');\n\t\tif (Type.isPlainObject(entityItemAvatarOptions) && !Type.isUndefined(entityItemAvatarOptions[option]))\n\t\t{\n\t\t\treturn entityItemAvatarOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.avatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.avatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.avatarOptions[option] = value;\n\t\t}\n\t}\n\n\tsetAvatarOptions(options: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setAvatarOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTextColor(): ?string\n\t{\n\t\tif (this.textColor !== null)\n\t\t{\n\t\t\treturn this.textColor;\n\t\t}\n\n\t\tif (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\n\t\tif (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\n\t\tif (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\n\t\tif (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.getSelector().isDeselectable() : this.deselectable;\n\t}\n\n\tgetCustomData(): Map<string, any>\n\t{\n\t\treturn this.customData;\n\t}\n\n\tgetLink(): ?string\n\t{\n\t\treturn this.link;\n\t}\n\n\tgetOnclick(): ?Function\n\t{\n\t\treturn this.onclick;\n\t}\n\n\tsetClickable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.clickable = flag;\n\t\t}\n\t}\n\n\tisClickable(): boolean\n\t{\n\t\tif (this.clickable !== null)\n\t\t{\n\t\t\treturn this.clickable;\n\t\t}\n\n\t\tif (this.getSelector().getTagClickable() !== null)\n\t\t{\n\t\t\treturn this.getSelector().getTagClickable();\n\t\t}\n\n\t\tif (this.getEntityTagOption('clickable') !== null)\n\t\t{\n\t\t\treturn this.getEntityTagOption('clickable');\n\t\t}\n\n\t\tif (this.getEntityItemOption('clickable') !== null)\n\t\t{\n\t\t\treturn this.getEntityItemOption('clickable');\n\t\t}\n\n\t\treturn false;\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\tconst title = this.getTitleContainer().textContent;\n\t\t\tthis.getContentContainer().setAttribute('title', this.constructor.#sanitizeTitle(title));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getTitleContainer().textContent = '';\n\t\t\tDom.attr(this.getContentContainer(), 'title', null);\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\t\tconst outline = this.getAvatarOption('outline');\n\t\tconst outlineOffset = this.getAvatarOption('outlineOffset');\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\t\tDom.style(this.getAvatarContainer(), 'outline', outline);\n\t\tDom.style(this.getAvatarContainer(), 'outline-offset', outlineOffset);\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\tstatic #sanitizeTitle(text: string): string\n\t{\n\t\treturn text.replaceAll(/[\\t ]+/gm, ' ').replaceAll(/\\n+/gm, '\\n').trim();\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-item ui-tag-selector-tag\">\n\t\t\t\t\t${this.getContentContainer()}\n\t\t\t\t\t${this.getRemoveIcon()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetContentContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('content-container', () => {\n\t\t\tif (Type.isStringFilled(this.getLink()))\n\t\t\t{\n\t\t\t\treturn Tag.render`\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"ui-tag-selector-tag-content\"\n\t\t\t\t\t\tonclick=\"${this.handleContainerClick.bind(this)}\"\n\t\t\t\t\t\thref=\"${this.getLink()}\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.getAvatarContainer()}\n\t\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t\t</a>\n\t\t\t\t`;\n\t\t\t}\n\n\t\t\tconst className = this.isClickable() || this.getOnclick() !== null ? ' ui-tag-selector-tag-content--clickable' : '';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ui-tag-selector-tag-content${className}\"\n\t\t\t\t\tonclick=\"${this.handleContainerClick.bind(this)}\"\n\t\t\t\t>\n\t\t\t\t\t${this.getAvatarContainer()}\n\t\t\t\t\t${this.getTitleContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetAvatarContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('avatar', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-tag-avatar\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTitleContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('title', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-tag-title\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetRemoveIcon(): HTMLElement\n\t{\n\t\treturn this.cache.remember('remove-icon', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-tag-remove\" onclick=\"${this.handleRemoveIconClick.bind(this)}\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetEntityTagOption(option: string): any\n\t{\n\t\treturn Entity.getTagOption(this.getEntityId(), option, this.getEntityType());\n\t}\n\n\tgetEntityItemOption(option: string): any\n\t{\n\t\treturn Entity.getItemOption(this.getEntityId(), option, this.getEntityType());\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered && this.getSelector() && this.getSelector().isRendered();\n\t}\n\n\tremove(animate: boolean = true): Promise\n\t{\n\t\tif (animate === false)\n\t\t{\n\t\t\tDom.remove(this.getContainer());\n\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}).catch(() => {\n\t\t\t\t// Fail silently\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}).catch(() => {\n\t\t\t\t// Fail silently\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\n\t\tconst selector = this.getSelector();\n\t\tselector.emit('TagItem:onClick', { item: this });\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}\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\ttagClickable: boolean = 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\t\tthis.setTagClickable(options.tagClickable);\n\n\t\tif (Type.isPlainObject(options.dialogOptions))\n\t\t{\n\t\t\tlet selectedItems = Type.isArray(options.items) ? options.items : [];\n\t\t\tif (Type.isArray(options.dialogOptions.selectedItems))\n\t\t\t{\n\t\t\t\tselectedItems = selectedItems.concat(options.dialogOptions.selectedItems);\n\t\t\t}\n\n\t\t\tconst dialogOptions = Object.assign(\n\t\t\t\t{},\n\t\t\t\toptions.dialogOptions,\n\t\t\t\t{\n\t\t\t\t\ttagSelectorOptions: null,\n\t\t\t\t\tselectedItems,\n\t\t\t\t\tmultiple: this.isMultiple(),\n\t\t\t\t\ttagSelector: this\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t(new Dialog(dialogOptions));\n\t\t}\n\t\telse if (Type.isArray(options.items))\n\t\t{\n\t\t\toptions.items.forEach((item) => {\n\t\t\t\tthis.addTag(item);\n\t\t\t});\n\t\t}\n\n\t\tthis.subscribeFromOptions(options.events);\n\t}\n\n\tgetDialog(): ?Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\t/**\n\t * @internal\n\t * @param dialog\n\t */\n\tsetDialog(dialog: ?Dialog): void\n\t{\n\t\tthis.dialog = dialog;\n\t}\n\n\tsetReadonly(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.readonly = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tif (flag)\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-tag-selector-container-readonly');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-tag-selector-container-readonly');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tisReadonly(): boolean\n\t{\n\t\treturn this.readonly;\n\t}\n\n\tsetLocked(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.locked = flag;\n\n\t\t\tif (flag)\n\t\t\t{\n\t\t\t\tDom.addClass(this.getOuterContainer(), 'ui-tag-selector-container-locked');\n\t\t\t\tthis.getTextBox().disabled = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.removeClass(this.getOuterContainer(), 'ui-tag-selector-container-locked');\n\t\t\t\tthis.getTextBox().disabled = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tlock(): void\n\t{\n\t\tif (!this.isLocked())\n\t\t{\n\t\t\tthis.setLocked(true);\n\t\t}\n\t}\n\n\tunlock(): void\n\t{\n\t\tif (this.isLocked())\n\t\t{\n\t\t\tthis.setLocked(false);\n\t\t}\n\t}\n\n\tisLocked(): boolean\n\t{\n\t\treturn this.locked;\n\t}\n\n\tisMultiple(): boolean\n\t{\n\t\treturn this.multiple;\n\t}\n\n\tsetDeselectable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tconst changed = this.deselectable !== flag;\n\t\t\tthis.deselectable = flag;\n\n\t\t\tif (changed)\n\t\t\t{\n\t\t\t\tthis.updateTags();\n\t\t\t}\n\t\t}\n\t}\n\n\tisDeselectable(): boolean\n\t{\n\t\treturn this.deselectable;\n\t}\n\n\tgetTag(tagItem: TagItem | ItemOptions): ?TagItem\n\t{\n\t\tif (tagItem instanceof TagItem)\n\t\t{\n\t\t\treturn this.getTags().find(tag => tag === tagItem);\n\t\t}\n\t\telse if (Type.isPlainObject(tagItem))\n\t\t{\n\t\t\tconst { id, entityId } = tagItem;\n\t\t\treturn this.getTags().find((tag: TagItem) => tag.getId() === id && tag.getEntityId() === entityId);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\taddTag(tagOptions: TagItemOptions): ?TagItem\n\t{\n\t\tif (!Type.isObjectLike(tagOptions))\n\t\t{\n\t\t\tthrow new Error('TagSelector.addTag: wrong item options.');\n\t\t}\n\n\t\tif (this.getTag(tagOptions))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst tag = new TagItem(tagOptions);\n\t\ttag.setSelector(this);\n\n\t\tconst event = new BaseEvent({ data: { tag } });\n\t\tthis.emit('onBeforeTagAdd', event);\n\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.isMultiple())\n\t\t{\n\t\t\tthis.removeTags();\n\t\t}\n\n\t\tthis.tags.push(tag);\n\n\t\tthis.emit('onTagAdd', { tag });\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\ttag.render();\n\t\t\tthis.getItemsContainer().insertBefore(tag.getContainer(), this.getTextBox());\n\n\t\t\tif (tagOptions.animate !== false)\n\t\t\t{\n\t\t\t\ttag.show().then(() => {\n\t\t\t\t\tthis.getContainer().scrollTop = this.getContainer().scrollHeight - this.getContainer().offsetHeight;\n\t\t\t\t\tthis.emit('onAfterTagAdd', { tag });\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emit('onAfterTagAdd', { tag });\n\t\t\t}\n\n\t\t\tthis.toggleAddButtonCaption();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onAfterTagAdd', { tag });\n\t\t}\n\n\t\treturn tag;\n\t}\n\n\tremoveTag(item: TagItem | ItemOptions, animate = true): void\n\t{\n\t\tconst tagItem = this.getTag(item);\n\t\tif (!tagItem)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { tag: tagItem } });\n\t\tthis.emit('onBeforeTagRemove', event);\n\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.tags = this.tags.filter(el => el !== tagItem);\n\n\t\tthis.emit('onTagRemove', { tag: tagItem });\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\ttagItem.remove(animate).then(() => {\n\t\t\t\tthis.toggleAddButtonCaption();\n\t\t\t\tthis.emit('onAfterTagRemove', { tag: tagItem });\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onAfterTagRemove', { tag: tagItem });\n\t\t}\n\t}\n\n\tremoveTags(): void\n\t{\n\t\tthis.getTags().forEach(tag => {\n\t\t\tthis.removeTag(tag, false);\n\t\t});\n\t}\n\n\tgetTags(): TagItem[]\n\t{\n\t\treturn this.tags;\n\t}\n\n\trenderTo(node: HTMLElement): void\n\t{\n\t\tthis.rendered = true;\n\n\t\tthis.getTags().forEach((tag: TagItem) => {\n\t\t\ttag.render();\n\t\t\tthis.getItemsContainer().insertBefore(tag.getContainer(), this.getTextBox());\n\t\t});\n\n\t\tif (Type.isDomNode(node))\n\t\t{\n\t\t\tDom.append(this.getOuterContainer(), node);\n\t\t}\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tupdateTags(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getTags().forEach((tag: TagItem) => {\n\t\t\t\ttag.render();\n\t\t\t});\n\t\t}\n\t}\n\n\tgetOuterContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('outer-container', () => {\n\t\t\tlet className = this.isReadonly() ? ' ui-tag-selector-container-readonly' : '';\n\t\t\tclassName += this.isLocked() ? ' ui-tag-selector-container-locked' : '';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-outer-container${className}\">${this.getContainer()}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst style =\n\t\t\t\tthis.getMaxHeight()\n\t\t\t\t\t? ` style=\"max-height: ${this.getMaxHeight()}px; -ms-overflow-style: -ms-autohiding-scrollbar;\"`\n\t\t\t\t\t: ''\n\t\t\t;\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-tag-selector-container\" \n\t\t\t\t\tonclick=\"${this.handleContainerClick.bind(this)}\"\n\t\t\t\t\t${style}\n\t\t\t\t>\n\t\t\t\t\t${this.getItemsContainer()}\n\t\t\t\t\t${this.getCreateButton()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetItemsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('items-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-items\">\n\t\t\t\t\t${this.getTextBox()}\n\t\t\t\t\t${this.getAddButton()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTextBox(): HTMLInputElement\n\t{\n\t\treturn this.cache.remember('text-box', () => {\n\t\t\tconst className = this.textBoxVisible ? '' : ' ui-tag-selector-item-hidden';\n\t\t\tconst input = Tag.render`\n\t\t\t\t<input \n\t\t\t\t\ttype=\"text\" \n\t\t\t\t\tclass=\"ui-tag-selector-item ui-tag-selector-text-box${className}\" \n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tplaceholder=\"${Text.encode(this.getPlaceholder())}\"\n\t\t\t\t\toninput=\"${this.handleTextBoxInput.bind(this)}\"\n\t\t\t\t\tonblur=\"${this.handleTextBoxBlur.bind(this)}\"\n\t\t\t\t\tonkeyup=\"${this.handleTextBoxKeyUp.bind(this)}\"\n\t\t\t\t\tonkeydown=\"${this.handleTextBoxKeyDown.bind(this)}\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t>\n\t\t\t`;\n\n\t\t\tconst width = this.getTextBoxWidth();\n\t\t\tif (width !== null)\n\t\t\t{\n\t\t\t\tDom.style(input, 'width', Type.isStringFilled(width) ? width : `${width}px`);\n\t\t\t}\n\n\t\t\tif (this.isLocked())\n\t\t\t{\n\t\t\t\tinput.disabled = true;\n\t\t\t}\n\n\t\t\treturn input;\n\t\t});\n\t}\n\n\tgetItemsHeight(): number\n\t{\n\t\treturn this.getItemsContainer().scrollHeight;\n\t}\n\n\tcalcHeight(): number\n\t{\n\t\tif (this.getMaxHeight() !== null)\n\t\t{\n\t\t\treturn Math.min(this.getItemsHeight(), this.getMaxHeight());\n\t\t}\n\n\t\treturn Math.max(this.getItemsHeight(), this.getMinHeight());\n\t}\n\n\tgetTextBoxValue(): string\n\t{\n\t\treturn this.getTextBox().value;\n\t}\n\n\tclearTextBox(): void\n\t{\n\t\tthis.getTextBox().value = '';\n\t\tthis.textBoxOldValue = '';\n\t}\n\n\tshowTextBox(): void\n\t{\n\t\tthis.textBoxVisible = true;\n\t\tDom.removeClass(this.getTextBox(), 'ui-tag-selector-item-hidden');\n\t}\n\n\thideTextBox(): void\n\t{\n\t\tthis.textBoxVisible = false;\n\t\tDom.addClass(this.getTextBox(), 'ui-tag-selector-item-hidden');\n\t}\n\n\tfocusTextBox(): void\n\t{\n\t\tthis.getTextBox().focus();\n\t}\n\n\tsetTextBoxAutoHide(autoHide: boolean): void\n\t{\n\t\tif (Type.isBoolean(autoHide))\n\t\t{\n\t\t\tthis.textBoxAutoHide = autoHide;\n\t\t}\n\t}\n\n\tgetTextBoxWidth(): string | number | null\n\t{\n\t\treturn this.textBoxWidth;\n\t}\n\n\tsetTextBoxWidth(width: string | number | null): void\n\t{\n\t\tif (Type.isStringFilled(width) || width === null)\n\t\t{\n\t\t\tthis.textBoxWidth = width;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getTextBox(), 'width', width);\n\t\t\t}\n\t\t}\n\t\telse if (Type.isNumber(width) && width > 0)\n\t\t{\n\t\t\tthis.textBoxWidth = width;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getTextBox(), 'width', `${width}px`);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetTagMaxWidth(): ?number\n\t{\n\t\treturn this.tagMaxWidth;\n\t}\n\n\tsetTagMaxWidth(width: ?number): void\n\t{\n\t\tif ((Type.isNumber(width) && width >= 0) || width === null)\n\t\t{\n\t\t\tthis.tagMaxWidth = width;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagAvatar(): ?string\n\t{\n\t\treturn this.tagAvatar;\n\t}\n\n\tsetTagAvatar(tagAvatar: ?string): void\n\t{\n\t\tif (Type.isString(tagAvatar) || tagAvatar === null)\n\t\t{\n\t\t\tthis.tagAvatar = tagAvatar;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagClickable(): boolean | null\n\t{\n\t\treturn this.tagClickable;\n\t}\n\n\tsetTagClickable(flag: boolean | null): void\n\t{\n\t\tif (Type.isBoolean(flag) || flag === null)\n\t\t{\n\t\t\tthis.tagClickable = flag;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagAvatarOptions(): ?AvatarOptions\n\t{\n\t\treturn this.tagAvatarOptions;\n\t}\n\n\tgetTagAvatarOption(option: $Keys<AvatarOptions>): string | boolean | number | null\n\t{\n\t\tif (this.tagAvatarOptions !== null && !Type.isUndefined(this.tagAvatarOptions[option]))\n\t\t{\n\t\t\treturn this.tagAvatarOptions[option];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetTagAvatarOption(option: $Keys<AvatarOptions>, value: string | boolean | number | null): void\n\t{\n\t\tif (Type.isStringFilled(option) && !Type.isUndefined(value))\n\t\t{\n\t\t\tif (this.tagAvatarOptions === null)\n\t\t\t{\n\t\t\t\tthis.tagAvatarOptions = {};\n\t\t\t}\n\n\t\t\tthis.tagAvatarOptions[option] = value;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tsetTagAvatarOptions(options: AvatarOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tObject.keys(options).forEach((option: string) => {\n\t\t\t\tthis.setTagAvatarOption(option, options[option]);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetTagTextColor(): ?string\n\t{\n\t\treturn this.tagTextColor;\n\t}\n\n\tsetTagTextColor(textColor: ?string): void\n\t{\n\t\tif (Type.isString(textColor) || textColor === null)\n\t\t{\n\t\t\tthis.tagTextColor = textColor;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagBgColor(): ?string\n\t{\n\t\treturn this.tagBgColor;\n\t}\n\n\tsetTagBgColor(bgColor: ?string): void\n\t{\n\t\tif (Type.isString(bgColor) || bgColor === null)\n\t\t{\n\t\t\tthis.tagBgColor = bgColor;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetTagFontWeight(): ?string\n\t{\n\t\treturn this.tagFontWeight;\n\t}\n\n\tsetTagFontWeight(fontWeight: ?string): void\n\t{\n\t\tif (Type.isString(fontWeight) || fontWeight === null)\n\t\t{\n\t\t\tthis.tagFontWeight = fontWeight;\n\t\t\tthis.updateTags();\n\t\t}\n\t}\n\n\tgetPlaceholder(): string\n\t{\n\t\treturn this.placeholder;\n\t}\n\n\tsetPlaceholder(placeholder: string): void\n\t{\n\t\tif (Type.isStringFilled(placeholder))\n\t\t{\n\t\t\tthis.placeholder = placeholder;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getTextBox().placeholder = placeholder;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMaxHeight(): ?number\n\t{\n\t\treturn this.maxHeight;\n\t}\n\n\tgetMinHeight(): number\n\t{\n\t\treturn 34;\n\t}\n\n\tsetMaxHeight(height: ?number): void\n\t{\n\t\tif ((Type.isNumber(height) && height > 0) || height === null)\n\t\t{\n\t\t\tthis.maxHeight = height;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'max-height', height > 0 ? `${height}px` : null);\n\t\t\t\tDom.style(this.getContainer(), '-ms-overflow-style', height > 0 ? '-ms-autohiding-scrollbar' : null);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAddButton(): HTMLElement\n\t{\n\t\treturn this.cache.remember('add-button', () => {\n\t\t\tconst className = this.addButtonVisible ? '' : ' ui-tag-selector-item-hidden';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"ui-tag-selector-item ui-tag-selector-add-button${className}\">\n\t\t\t\t\t${this.getAddButtonLink()}\n\t\t\t\t</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetAddButtonLink(): HTMLElement\n\t{\n\t\treturn this.cache.remember('add-button-link', () => {\n\t\t\tconst caption = Text.encode(this.getActualButtonCaption());\n\n\t\t\treturn Tag.render`\n\t\t\t\t<span \n\t\t\t\t\tclass=\"ui-tag-selector-add-button-caption\" \n\t\t\t\t\tonclick=\"${this.handleAddButtonClick.bind(this)}\">${caption}</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetAddButtonCaption(): string\n\t{\n\t\treturn (\n\t\t\tthis.addButtonCaption === null\n\t\t\t\t? Loc.getMessage('UI_TAG_SELECTOR_ADD_BUTTON_CAPTION')\n\t\t\t\t: this.addButtonCaption\n\t\t);\n\t}\n\n\tsetAddButtonCaption(caption: string): void\n\t{\n\t\tif (Type.isStringFilled(caption))\n\t\t{\n\t\t\tthis.addButtonCaption = caption;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.toggleAddButtonCaption();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetAddButtonCaptionMore(): ?string\n\t{\n\t\treturn (\n\t\t\tthis.addButtonCaptionMore === null\n\t\t\t\t? this.isMultiple()\n\t\t\t\t\t? Loc.getMessage('UI_TAG_SELECTOR_ADD_BUTTON_CAPTION')\n\t\t\t\t\t: Loc.getMessage('UI_TAG_SELECTOR_ADD_BUTTON_CAPTION_SINGLE')\n\t\t\t\t: this.addButtonCaptionMore\n\t\t);\n\t}\n\n\tsetAddButtonCaptionMore(caption: string): void\n\t{\n\t\tif (Type.isStringFilled(caption))\n\t\t{\n\t\t\tthis.addButtonCaptionMore = caption;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.toggleAddButtonCaption();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleAddButtonCaption(): void\n\t{\n\t\tif (this.getAddButtonCaptionMore() === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getAddButtonLink().textContent = this.getActualButtonCaption();\n\t}\n\n\tgetActualButtonCaption(): string\n\t{\n\t\treturn (\n\t\t\tthis.getTags().length > 0 && this.getAddButtonCaptionMore() !== null\n\t\t\t\t? this.getAddButtonCaptionMore()\n\t\t\t\t: this.getAddButtonCaption()\n\t\t);\n\t}\n\n\tshowAddButton(): void\n\t{\n\t\tthis.addButtonVisible = true;\n\t\tDom.removeClass(this.getAddButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\thideAddButton(): void\n\t{\n\t\tthis.addButtonVisible = false;\n\t\tDom.addClass(this.getAddButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\tgetCreateButton(): HTMLElement\n\t{\n\t\treturn this.cache.remember('create-button', () => {\n\t\t\tconst className = this.createButtonVisible ? '' : ' ui-tag-selector-item-hidden';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-tag-selector-create-button${className}\">\n\t\t\t\t\t<span \n\t\t\t\t\t\tclass=\"ui-tag-selector-create-button-caption\"\n\t\t\t\t\t\tonclick=\"${this.handleCreateButtonClick.bind(this)}\"\n\t\t\t\t\t>${Text.encode(this.getCreateButtonCaption())}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tshowCreateButton(): void\n\t{\n\t\tthis.createButtonVisible = true;\n\t\tDom.removeClass(this.getCreateButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\thideCreateButton(): void\n\t{\n\t\tthis.createButtonVisible = false;\n\t\tDom.addClass(this.getCreateButton(), 'ui-tag-selector-item-hidden');\n\t}\n\n\tgetCreateButtonCaption(): string\n\t{\n\t\treturn (\n\t\t\tthis.createButtonCaption === null\n\t\t\t\t? Loc.getMessage('UI_TAG_SELECTOR_CREATE_BUTTON_CAPTION')\n\t\t\t\t: this.createButtonCaption\n\t\t);\n\t}\n\n\tsetCreateButtonCaption(caption: string): void\n\t{\n\t\tif (Type.isStringFilled(caption))\n\t\t{\n\t\t\tthis.createButtonCaption = caption;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getCreateButton().children[0].textContent = caption;\n\t\t\t}\n\t\t}\n\t}\n\n\thandleContainerClick(event: MouseEvent): void\n\t{\n\t\tthis.emit('onContainerClick', { event });\n\t}\n\n\thandleTextBoxInput(event: InputEvent): void\n\t{\n\t\tconst newValue = this.getTextBoxValue();\n\t\tif (newValue !== this.textBoxOldValue)\n\t\t{\n\t\t\tthis.textBoxOldValue = newValue;\n\t\t\tthis.emit('onInput', { event });\n\t\t}\n\t}\n\n\thandleTextBoxBlur(event: FocusEvent): void\n\t{\n\t\tthis.emit('onBlur', { event });\n\n\t\tif (this.textBoxAutoHide)\n\t\t{\n\t\t\tthis.clearTextBox();\n\t\t\tthis.showAddButton();\n\t\t\tthis.hideTextBox();\n\t\t}\n\t}\n\n\thandleTextBoxKeyUp(event: KeyboardEvent): void\n\t{\n\t\tthis.emit('onKeyUp', { event });\n\n\t\tif (event.key === 'Enter')\n\t\t{\n\t\t\tthis.emit('onEnter', { event });\n\n\t\t\tif (this.textBoxAutoHide)\n\t\t\t{\n\t\t\t\tthis.clearTextBox();\n\t\t\t\tthis.showAddButton();\n\t\t\t\tthis.hideTextBox();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleTextBoxKeyDown(event: KeyboardEvent): void\n\t{\n\t\tif (event.key === 'Enter')\n\t\t{\n\t\t\t// prevent a form submit\n\t\t\tevent.preventDefault();\n\n\t\t\tif ((Browser.isMac() && event.metaKey) || event.ctrlKey)\n\t\t\t{\n\t\t\t\tthis.emit('onMetaEnter', { event });\n\t\t\t}\n\t\t}\n\n\t\tthis.emit('onKeyDown', { event });\n\t}\n\n\thandleAddButtonClick(event: MouseEvent): void\n\t{\n\t\tthis.hideAddButton();\n\t\tthis.showTextBox();\n\t\tthis.focusTextBox();\n\n\t\tthis.emit('onAddButtonClick', { event });\n\t}\n\n\thandleCreateButtonClick(event: MouseEvent): void\n\t{\n\t\tthis.emit('onCreateButtonClick', { event });\n\t}\n}\n","import { Event } from 'main.core';\nimport type ItemNode from '../item/item-node';\nimport type Tab from './tabs/tab';\nimport type Dialog from './dialog';\n\nexport default class Navigation\n{\n\tdialog: Dialog = null;\n\tlockedTab: Tab = null;\n\tenabled: boolean = false;\n\n\t// IE/Edge compatible event names\n\tstatic keyMap: Object<string, string> = {\n\t\t'Down': 'ArrowDown',\n\t\t'Up': 'ArrowUp',\n\t\t'Left': 'ArrowLeft',\n\t\t'Right': 'ArrowRight',\n\t\t'Spacebar': 'Space',\n\t\t' ': 'Space' // For all browsers\n\t};\n\n\tconstructor(dialog: Dialog)\n\t{\n\t\tthis.dialog = dialog;\n\n\t\tthis.dialog.subscribe('onShow', this.handleDialogShow.bind(this));\n\t\tthis.dialog.subscribe('onHide', this.handleDialogHide.bind(this));\n\t\tthis.dialog.subscribe('onDestroy', this.handleDialogDestroy.bind(this));\n\n\t\tthis.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n\t\tthis.handleDocumentMouseMove = this.handleDocumentMouseMove.bind(this);\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tenable(): void\n\t{\n\t\tif (!this.isEnabled())\n\t\t{\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(): void\n\t{\n\t\tif (this.isEnabled())\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\tthis.unlockTab();\n\t\t}\n\n\t\tthis.enabled = false;\n\t}\n\n\tisEnabled(): boolean\n\t{\n\t\treturn this.enabled;\n\t}\n\n\tbindEvents(): void\n\t{\n\t\tEvent.bind(document, 'keydown', this.handleDocumentKeyDown);\n\t}\n\n\tunbindEvents(): void\n\t{\n\t\tEvent.unbind(document, 'keydown', this.handleDocumentKeyDown);\n\t}\n\n\tgetNextNode(): ?ItemNode\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet nextNode = null;\n\t\tlet currentNode = this.getActiveNode();\n\n\t\tif (currentNode.hasChildren() && currentNode.isOpen())\n\t\t{\n\t\t\tnextNode = currentNode.getFirstChild();\n\t\t}\n\n\t\twhile (nextNode === null && currentNode !== null)\n\t\t{\n\t\t\tnextNode = currentNode.getNextSibling();\n\t\t\tif (nextNode)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrentNode = currentNode.getParentNode();\n\t\t}\n\n\t\treturn nextNode;\n\t}\n\n\tgetPreviousNode(): ?ItemNode\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet previousNode = this.getActiveNode().getPreviousSibling();\n\t\tif (previousNode)\n\t\t{\n\t\t\twhile (previousNode.hasChildren() && previousNode.isOpen())\n\t\t\t{\n\t\t\t\tconst lastChild = previousNode.getLastChild();\n\t\t\t\tif (lastChild === null)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tpreviousNode = lastChild;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getActiveNode().getParentNode() && !this.getActiveNode().getParentNode().isRoot())\n\t\t\t{\n\t\t\t\tpreviousNode = this.getActiveNode().getParentNode();\n\t\t\t}\n\t\t}\n\n\t\treturn previousNode;\n\t}\n\n\tgetFirstNode(): ?ItemNode\n\t{\n\t\tconst tab = this.getDialog().getActiveTab();\n\t\treturn tab && tab.getRootNode().getFirstChild();\n\t}\n\n\tgetLastNode(): ?ItemNode\n\t{\n\t\tconst tab = this.getDialog().getActiveTab();\n\t\tif (!tab)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tlet lastNode = tab.getRootNode().getLastChild();\n\t\tif (lastNode !== null)\n\t\t{\n\t\t\twhile (lastNode.hasChildren() && lastNode.isOpen())\n\t\t\t{\n\t\t\t\tconst lastChild = lastNode.getLastChild();\n\t\t\t\tif (lastChild === null)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlastNode = lastChild;\n\t\t\t}\n\t\t}\n\n\t\treturn lastNode;\n\t}\n\n\tgetActiveNode(): ?ItemNode\n\t{\n\t\treturn this.getDialog().getFocusedNode();\n\t}\n\n\tfocusOnNode(node: ItemNode): void\n\t{\n\t\tif (node)\n\t\t{\n\t\t\tnode.focus();\n\t\t\tnode.scrollIntoView();\n\t\t}\n\t}\n\n\tlockTab(): void\n\t{\n\t\tconst activeTab = this.getDialog().getActiveTab();\n\t\tif (this.lockedTab === activeTab)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\telse if (this.lockedTab !== null)\n\t\t{\n\t\t\tthis.unlockTab();\n\t\t}\n\n\t\tthis.lockedTab = activeTab;\n\t\tthis.lockedTab.lock();\n\n\t\tEvent.bind(document, 'mousemove', this.handleDocumentMouseMove);\n\t}\n\n\tunlockTab(): void\n\t{\n\t\tif (this.lockedTab === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lockedTab.unlock();\n\t\tthis.lockedTab = null;\n\n\t\tEvent.unbind(document, 'mousemove', this.handleDocumentMouseMove);\n\t}\n\n\thandleDialogShow(): void\n\t{\n\t\tthis.enable();\n\t}\n\n\thandleDialogHide(): void\n\t{\n\t\tthis.disable();\n\t}\n\n\thandleDialogDestroy(): void\n\t{\n\t\tthis.disable();\n\t}\n\n\thandleDocumentMouseMove(): void\n\t{\n\t\tthis.unlockTab();\n\t}\n\n\thandleDocumentKeyDown(event: KeyboardEvent): void\n\t{\n\t\tif (!this.getDialog().isOpen())\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.metaKey || event.ctrlKey || event.altKey)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeTab = this.getDialog().getActiveTab();\n\t\tif (!activeTab)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst keyName = this.constructor.keyMap[event.key] || event.key;\n\t\tif (activeTab === this.getDialog().getSearchTab() && ['ArrowLeft', 'ArrowRight'].includes(keyName))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst handler: ?Function = this[`handle${keyName}Press`];\n\t\tif (handler)\n\t\t{\n\t\t\thandler.call(this, event);\n\t\t\tthis.lockTab(activeTab);\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\thandleArrowDownPress(): void\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\tconst firstNode = this.getFirstNode();\n\t\t\tthis.focusOnNode(firstNode);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst nextNode = this.getNextNode();\n\t\t\tif (nextNode)\n\t\t\t{\n\t\t\t\tthis.focusOnNode(nextNode);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst firstNode = this.getFirstNode();\n\t\t\t\tthis.focusOnNode(firstNode);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleArrowUpPress(): void\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\tconst lastNode = this.getLastNode();\n\t\t\tthis.focusOnNode(lastNode);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst previousNode = this.getPreviousNode();\n\t\t\tif (previousNode)\n\t\t\t{\n\t\t\t\tthis.focusOnNode(previousNode);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst lastNode = this.getLastNode();\n\t\t\t\tthis.focusOnNode(lastNode);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleArrowRightPress(): void\n\t{\n\t\tif (this.getActiveNode())\n\t\t{\n\t\t\tthis.getActiveNode().expand();\n\t\t}\n\t}\n\n\thandleArrowLeftPress(): void\n\t{\n\t\tif (!this.getActiveNode())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getActiveNode().isOpen())\n\t\t{\n\t\t\tthis.getActiveNode().collapse();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst parentNode = this.getActiveNode().getParentNode();\n\t\t\tif (parentNode && !parentNode.isRoot())\n\t\t\t{\n\t\t\t\tthis.focusOnNode(parentNode);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleEnterPress(): void\n\t{\n\t\tif (this.getActiveNode())\n\t\t{\n\t\t\tthis.getActiveNode().click();\n\t\t}\n\t}\n\n\t/*handleSpacePress(event: KeyboardEvent): void\n\t{\n\t\tconst searchQuery = this.getDialog().getTagSelector() && this.getDialog().getTagSelector().getTextBoxValue();\n\t\tif (this.getActiveNode() && !Type.isStringFilled(searchQuery))\n\t\t{\n\t\t\tthis.getActiveNode().click();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}*/\n\n\thandleTabPress(event: KeyboardEvent): void\n\t{\n\t\tconst activeTab = this.getDialog().getActiveTab();\n\t\tif (!activeTab)\n\t\t{\n\t\t\tthis.getDialog().selectFirstTab();\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.shiftKey)\n\t\t{\n\t\t\tconst previousTab = this.getDialog().getPreviousTab();\n\t\t\tif (previousTab)\n\t\t\t{\n\t\t\t\tthis.getDialog().selectTab(previousTab.getId());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDialog().selectLastTab();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst nextTab = this.getDialog().getNextTab();\n\t\t\tif (nextTab)\n\t\t\t{\n\t\t\t\tthis.getDialog().selectTab(nextTab.getId());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDialog().selectFirstTab();\n\t\t\t}\n\t\t}\n\t}\n}","import type { BaseEvent } from 'main.core.events';\nimport type Dialog from '../dialog';\n\nexport default class SliderIntegration\n{\n\tdialog: Dialog = null;\n\tsliders: Set = new Set();\n\n\tconstructor(dialog: Dialog)\n\t{\n\t\tthis.dialog = dialog;\n\n\t\tthis.dialog.subscribe('onShow', this.handleDialogShow.bind(this));\n\t\tthis.dialog.subscribe('onHide', this.handleDialogHide.bind(this));\n\t\tthis.dialog.subscribe('onDestroy', this.handleDialogDestroy.bind(this));\n\n\t\tthis.handleSliderOpen = this.handleSliderOpen.bind(this);\n\t\tthis.handleSliderClose = this.handleSliderClose.bind(this);\n\t\tthis.handleSliderDestroy = this.handleSliderDestroy.bind(this);\n\t}\n\n\tgetDialog(): Dialog\n\t{\n\t\treturn this.dialog;\n\t}\n\n\tbindEvents(): void\n\t{\n\t\tthis.unbindEvents();\n\n\t\tif (top.BX)\n\t\t{\n\t\t\ttop.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onOpen', this.handleSliderOpen);\n\t\t\ttop.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onCloseComplete', this.handleSliderClose);\n\t\t\ttop.BX.Event.EventEmitter.subscribe('SidePanel.Slider:onDestroy', this.handleSliderDestroy);\n\t\t}\n\t}\n\n\tunbindEvents(): void\n\t{\n\t\tif (top.BX)\n\t\t{\n\t\t\ttop.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onOpen', this.handleSliderOpen);\n\t\t\ttop.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onCloseComplete', this.handleSliderClose);\n\t\t\ttop.BX.Event.EventEmitter.unsubscribe('SidePanel.Slider:onDestroy', this.handleSliderDestroy);\n\t\t}\n\t}\n\n\tisDialogInSlider(slider): boolean\n\t{\n\t\tif (slider.getFrameWindow())\n\t\t{\n\t\t\treturn slider.getFrameWindow().document.contains(this.getDialog().getContainer());\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn  slider.getContainer().contains(this.getDialog().getContainer());\n\t\t}\n\t}\n\n\thandleDialogShow(): void\n\t{\n\t\tthis.bindEvents();\n\t}\n\n\thandleDialogHide(): void\n\t{\n\t\tthis.sliders.clear();\n\t\tthis.unbindEvents();\n\t\tthis.getDialog().unfreeze();\n\t}\n\n\thandleDialogDestroy(): void\n\t{\n\t\tthis.sliders.clear();\n\t\tthis.unbindEvents();\n\t}\n\n\thandleSliderOpen(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tif (!this.isDialogInSlider(slider))\n\t\t{\n\t\t\tthis.sliders.add(slider);\n\t\t\tthis.getDialog().freeze();\n\t\t}\n\t}\n\n\thandleSliderClose(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tthis.sliders.delete(slider);\n\t\tif (this.sliders.size === 0)\n\t\t{\n\t\t\tthis.getDialog().unfreeze();\n\t\t}\n\t}\n\n\thandleSliderDestroy(event: BaseEvent): void\n\t{\n\t\tconst [sliderEvent] = event.getData();\n\t\tconst slider = sliderEvent.getSlider();\n\n\t\tif (this.isDialogInSlider(slider))\n\t\t{\n\t\t\tthis.unbindEvents();\n\t\t\tthis.dialog.destroy();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sliders.delete(slider);\n\t\t\tif (this.sliders.size === 0)\n\t\t\t{\n\t\t\t\tthis.getDialog().unfreeze();\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Dom, Tag, Type } from 'main.core';\nimport BaseHeader from './base-header';\nimport type Dialog from '../dialog';\nimport type Tab from '../tabs/tab';\nimport type { HeaderOptions } from './header-content';\n\nexport default class DefaultHeader extends BaseHeader\n{\n\tcontent: HTMLElement = null;\n\n\tconstructor(context: Dialog | Tab, options: HeaderOptions)\n\t{\n\t\tsuper(context, options);\n\n\t\tthis.setContent(this.getOption('content'));\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tconst container = Tag.render`\n\t\t\t<div>\n\t\t\t\t${this.getContent() ? this.getContent() : '' }\n\t\t\t</div>\n\t\t`;\n\n\t\tconst className = this.getOption('containerClass', 'ui-selector-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<div>\n\t\t\t\t${this.getContent() ? this.getContent() : '' }\n\t\t\t</div>\n\t\t`;\n\n\t\tconst className = this.getOption('containerClass', 'ui-selector-footer-default');\n\t\tconst containerStyles = this.getOption('containerStyles', {});\n\n\t\tDom.addClass(container, className);\n\t\tDom.style(container, containerStyles);\n\n\t\treturn container;\n\t}\n\n\tgetContent(): HTMLElement | HTMLElement[] | string | null\n\t{\n\t\treturn this.content;\n\t}\n\n\tsetContent(content: string | HTMLElement | HTMLElement[]): 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<SearchField, MatchField> = new Map();\n\tsort: ?number = null;\n\n\tconstructor(item: Item, queryWords: string[], matchIndexes: MatchIndex[] = [])\n\t{\n\t\tthis.item = item;\n\t\tthis.queryWords = queryWords;\n\t\tthis.addIndexes(matchIndexes);\n\t}\n\n\tgetItem(): Item\n\t{\n\t\treturn this.item;\n\t}\n\n\tgetQueryWords(): string[]\n\t{\n\t\treturn this.queryWords;\n\t}\n\n\tgetMatchFields(): Map<SearchField, MatchField>\n\t{\n\t\treturn this.matchFields;\n\t}\n\n\tgetSort(): ?number\n\t{\n\t\treturn this.sort;\n\t}\n\n\taddIndex(matchIndex: MatchIndex): void\n\t{\n\t\tlet matchField = this.matchFields.get(matchIndex.getField());\n\t\tif (!matchField)\n\t\t{\n\t\t\tmatchField = new MatchField(matchIndex.getField());\n\t\t\tthis.matchFields.set(matchIndex.getField(), matchField);\n\n\t\t\tconst fieldSort = matchIndex.getField().getSort();\n\t\t\tif (fieldSort !== null)\n\t\t\t{\n\t\t\t\tthis.sort = this.sort === null ? fieldSort : Math.min(this.sort, fieldSort);\n\t\t\t}\n\t\t}\n\n\t\tmatchField.addIndex(matchIndex);\n\t}\n\n\taddIndexes(matchIndexes: MatchIndex[]): void\n\t{\n\t\tmatchIndexes.forEach(matchIndex => {\n\t\t\tthis.addIndex(matchIndex);\n\t\t});\n\t}\n}","import MatchResult from './match-result';\nimport MatchIndex from './match-index';\n\nimport type SearchFieldIndex from './search-field-index';\nimport type Item from '../item/item';\nimport type SearchQuery from './search-query';\n\nconst collator = new Intl.Collator(undefined, { sensitivity: 'base' });\n\nexport default class SearchEngine\n{\n\tstatic matchItems(items: Item[], searchQuery: SearchQuery): MatchResult[]\n\t{\n\t\tconst matchResults = [];\n\t\tconst queryWords = searchQuery.getQueryWords();\n\t\tlet limit = searchQuery.getResultLimit();\n\n\t\tfor (let i = 0; i < items.length; i++)\n\t\t{\n\t\t\tif (limit === 0)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst item = items[i];\n\t\t\tif (item.isSelected() || !item.isSearchable() || item.isHidden() || !item.getEntity().isSearchable())\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst matchResult = this.matchItem(item, queryWords);\n\t\t\tif (matchResult)\n\t\t\t{\n\t\t\t\tmatchResults.push(matchResult);\n\t\t\t\tlimit--;\n\t\t\t}\n\t\t}\n\n\t\treturn matchResults;\n\t}\n\n\tstatic matchItem(item: Item, queryWords: string[]): MatchResult\n\t{\n\t\tlet matches = [];\n\t\tfor (let i = 0; i < queryWords.length; i++)\n\t\t{\n\t\t\tconst queryWord = queryWords[i];\n\t\t\tconst results = this.matchWord(item, queryWord);\n\t\t\t//const match = this.matchWord(item, queryWord);\n\t\t\t//if (match === null)\n\t\t\tif (results.length === 0)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmatches = matches.concat(results);\n\t\t\t\t//matches.push(match);\n\t\t\t}\n\t\t}\n\n\t\tif (matches.length > 0)\n\t\t{\n\t\t\treturn new MatchResult(item, queryWords, matches);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tstatic matchWord(item: Item, queryWord: string): MatchIndex[]\n\t{\n\t\tconst searchIndexes = item.getSearchIndex().getIndexes();\n\t\tconst matches = [];\n\n\t\tfor (let i = 0; i < searchIndexes.length; i++)\n\t\t{\n\t\t\tconst fieldIndex: SearchFieldIndex = searchIndexes[i];\n\t\t\tconst indexes = fieldIndex.getIndexes();\n\t\t\tfor (let j = 0; j < indexes.length; j++)\n\t\t\t{\n\t\t\t\tconst index = indexes[j];\n\t\t\t\tconst word = index.getWord().substring(0, queryWord.length);\n\t\t\t\tif (collator.compare(queryWord, word) === 0)\n\t\t\t\t{\n\t\t\t\t\tmatches.push(new MatchIndex(fieldIndex.getField(), queryWord, index.getStartIndex()));\n\t\t\t\t\t//return new MatchIndex(field, queryWord, index[i][1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (matches.length > 0)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t\treturn matches;\n\t\t//return null;\n\t}\n}","import { Type } from 'main.core';\n\nexport default class SearchQuery\n{\n\tqueryWords: string[] = [];\n\tquery: string = '';\n\tcacheable: boolean = true;\n\tdynamicSearchEntities: string[] = [];\n\tresultLimit: number = 100;\n\n\tconstructor(query: string)\n\t{\n\t\tthis.query = query.trim().replace(/\\s\\s+/g, ' ');\n\t\tthis.queryWords = Type.isStringFilled(this.query) ? this.query.split(' ') : [];\n\t}\n\n\tgetQueryWords(): string[]\n\t{\n\t\treturn this.queryWords;\n\t}\n\n\tgetQuery(): string\n\t{\n\t\treturn this.query;\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.getQueryWords().length === 0;\n\t}\n\n\tsetCacheable(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.cacheable = flag;\n\t\t}\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\tsetResultLimit(limit: number)\n\t{\n\t\tif (Type.isNumber(limit) && limit >= 0)\n\t\t{\n\t\t\tthis.resultLimit = limit;\n\t\t}\n\t}\n\n\tgetResultLimit(): number\n\t{\n\t\treturn this.resultLimit;\n\t}\n\n\thasDynamicSearch(): boolean\n\t{\n\t\treturn this.getDynamicSearchEntities().length > 0;\n\t}\n\n\thasDynamicSearchEntity(entityId: string): boolean\n\t{\n\t\treturn this.getDynamicSearchEntities().includes(entityId);\n\t}\n\n\tsetDynamicSearchEntities(entities: string[]): void\n\t{\n\t\tif (Type.isArrayFilled(entities))\n\t\t{\n\t\t\tentities.forEach((entityId: string) => {\n\t\t\t\tif (Type.isStringFilled(entityId) && !this.hasDynamicSearchEntity(entityId))\n\t\t\t\t{\n\t\t\t\t\tthis.dynamicSearchEntities.push(entityId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.dynamicSearchEntities;\n\t}\n\n\tgetDynamicSearchEntities(): string[]\n\t{\n\t\treturn this.dynamicSearchEntities;\n\t}\n\n\tgetAjaxJson(): { [key: string]: any }\n\t{\n\t\treturn this.toJSON();\n\t}\n\n\ttoJSON(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tqueryWords: this.getQueryWords(),\n\t\t\tquery: this.getQuery(),\n\t\t\tdynamicSearchEntities: this.getDynamicSearchEntities(),\n\t\t};\n\t}\n}","import { Cache, Tag, Loc, Dom } from 'main.core';\nimport { Loader } from 'main.loader';\nimport type Tab from './tab';\n\nexport default class SearchLoader\n{\n\ttab: Tab = null;\n\tloader: Loader = null;\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(tab: Tab)\n\t{\n\t\tthis.tab = tab;\n\t}\n\n\tgetTab(): Tab\n\t{\n\t\treturn this.tab;\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getIconContainer(),\n\t\t\t\tsize: 32\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-loader\">\n\t\t\t\t\t${this.getBoxContainer()}\n\t\t\t\t\t${this.getSpacerContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetBoxContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('box-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-loader-box\">\n\t\t\t\t\t${this.getIconContainer()}\n\t\t\t\t\t${this.getTextContainer()}\n\t\t\t\t</div>`;\n\t\t});\n\t}\n\n\tgetIconContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('icon', () => {\n\t\t\treturn Tag.render`<div class=\"ui-selector-search-loader-icon\"></div>`;\n\t\t});\n\t}\n\n\tgetTextContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('text', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-loader-text\">${\n\t\t\t\t\tLoc.getMessage('UI_SELECTOR_SEARCH_LOADER_TEXT')\n\t\t\t\t}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetSpacerContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('spacer', () => {\n\t\t\treturn Tag.render`<div class=\"ui-selector-search-loader-spacer\"></div>`;\n\t\t});\n\t}\n\n\tshow(): void\n\t{\n\t\tif (!this.getContainer().parentNode)\n\t\t{\n\t\t\tDom.append(this.getContainer(), this.getTab().getContainer());\n\t\t}\n\n\t\tvoid this.getLoader().show();\n\n\t\tDom.addClass(this.getContainer(), 'ui-selector-search-loader--show');\n\t\trequestAnimationFrame(() => {\n\t\t\tDom.addClass(this.getContainer(), 'ui-selector-search-loader--animate');\n\t\t});\n\t}\n\n\thide(): void\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(\n\t\t\tthis.getContainer(),\n\t\t\t['ui-selector-search-loader--show', 'ui-selector-search-loader--animate']\n\t\t);\n\n\t\tvoid this.getLoader().hide();\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn this.loader !== null && this.loader.isShown();\n\t}\n}","import { Tag, Browser, Loc, Type } from 'main.core';\nimport { Loader } from 'main.loader';\nimport BaseFooter from '../footer/base-footer';\n\nimport type { BaseEvent } from 'main.core.events';\nimport type Tab from '../tabs/tab';\nimport type { FooterOptions } from './footer-content';\n\nexport default class SearchTabFooter extends BaseFooter\n{\n\tloader: Loader = null;\n\n\tconstructor(tab: Tab, options: FooterOptions)\n\t{\n\t\tsuper(tab, options);\n\n\t\tthis.getDialog().subscribe('onSearch', this.handleOnSearch.bind(this));\n\t\tconst tagSelector = this.getDialog().getTagSelector();\n\t\tif (tagSelector)\n\t\t{\n\t\t\ttagSelector.subscribe('onMetaEnter', this.handleMetaEnter.bind(this));\n\t\t}\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\treturn Tag.render`\n\t\t\t<div class=\"ui-selector-search-footer\" onclick=\"${this.handleClick.bind(this)}\">\n\t\t\t\t<div class=\"ui-selector-search-footer-box\">\n\t\t\t\t\t${this.getLabelContainer()}\n\t\t\t\t\t${this.getQueryContainer()}\n\t\t\t\t\t${this.getLoaderContainer()}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ui-selector-search-footer-cmd\">${\n\t\t\t\t\tBrowser.isMac() ? '&#8984;+Enter'  : 'Ctrl+Enter'\n\t\t\t\t}</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getLoaderContainer(),\n\t\t\t\tsize: 17,\n\t\t\t\tcolor: 'rgba(82, 92, 105, 0.9)'\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t}\n\n\thideLoader(): void\n\t{\n\t\tvoid this.getLoader().hide();\n\t}\n\n\tsetLabel(label: string)\n\t{\n\t\tif (Type.isString(label))\n\t\t{\n\t\t\tthis.getLabelContainer().textContent = label;\n\t\t}\n\t}\n\n\tgetLabelContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('label', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"ui-selector-search-footer-label\">${\n\t\t\t\t\tthis.getOption('label', Loc.getMessage('UI_SELECTOR_CREATE_ITEM_LABEL'))\n\t\t\t}</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetQueryContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('name-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<span class=\"ui-selector-search-footer-query\"></span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetLoaderContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('loader', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-search-footer-loader\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tcreateItem(): void\n\t{\n\t\tconst tagSelector = this.getDialog().getTagSelector();\n\t\tif (tagSelector && tagSelector.isLocked())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst finalize = () => {\n\t\t\tthis.hideLoader();\n\t\t\tif (this.getDialog().getTagSelector())\n\t\t\t{\n\t\t\t\tthis.getDialog().getTagSelector().unlock();\n\t\t\t\tthis.getDialog().focusSearch();\n\t\t\t}\n\t\t};\n\n\t\tevent.preventDefault();\n\t\tthis.showLoader();\n\n\t\tif (tagSelector)\n\t\t{\n\t\t\ttagSelector.lock();\n\t\t}\n\n\t\tthis.getDialog()\n\t\t\t.emitAsync('Search:onItemCreateAsync', {\n\t\t\t\tsearchQuery: this.getTab().getLastSearchQuery()\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tthis.getTab().clearResults();\n\t\t\t\tthis.getDialog().clearSearch();\n\t\t\t\tif (this.getDialog().getActiveTab() === this.getTab())\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().selectFirstTab();\n\t\t\t\t}\n\n\t\t\t\tfinalize();\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tfinalize();\n\t\t\t})\n\t\t;\n\t}\n\n\thandleClick(): void\n\t{\n\t\tthis.createItem();\n\t}\n\n\thandleMetaEnter(event: BaseEvent): void\n\t{\n\t\tconst keyboardEvent: KeyboardEvent = event.getData().event;\n\t\tkeyboardEvent.stopPropagation();\n\n\t\tif (this.getDialog().getActiveTab() !== this.getTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.handleClick();\n\t}\n\n\thandleOnSearch(event: BaseEvent): void\n\t{\n\t\tconst { query } = event.getData();\n\t\tthis.getQueryContainer().textContent = query;\n\t}\n}\n","import { Runtime, ajax as Ajax, Type, Loc, type AjaxResponse } from 'main.core';\nimport EntityErrorCollection from '../../entity/entity-error-collection';\nimport type { EntityErrorOptions } from '../../entity/entity-error-options';\n\nimport Tab from './tab';\nimport SearchEngine from '../../search/search-engine';\nimport MatchResult from '../../search/match-result';\nimport SearchQuery from '../../search/search-query';\nimport SearchLoader from './search-loader';\nimport SearchTabFooter from '../footer/search-tab-footer';\n\nimport type { ItemOptions } from '../../item/item-options';\nimport type { TabOptions } from './tab-options';\nimport type Entity from '../../entity/entity';\nimport type Dialog from '../dialog';\nimport type { SearchOptions } from '../search-options';\n\nexport default class SearchTab extends Tab\n{\n\tlastSearchQuery: ?SearchQuery = null;\n\tqueryCache = new Set();\n\tqueryXhr = null;\n\tsearchLoader: SearchLoader = new SearchLoader(this);\n\tallowCreateItem: boolean = false;\n\n\tconstructor(dialog: Dialog, tabOptions: TabOptions, searchOptions: SearchOptions)\n\t{\n\t\tconst defaults = {\n\t\t\ttitle: Loc.getMessage('UI_SELECTOR_SEARCH_TAB_TITLE'),\n\t\t\tvisible: false,\n\t\t\tstub: true,\n\t\t\tstubOptions: {\n\t\t\t\tautoShow: false,\n\t\t\t\ttitle: Loc.getMessage('UI_SELECTOR_SEARCH_STUB_TITLE'),\n\t\t\t\tsubtitle: Loc.getMessage('UI_SELECTOR_SEARCH_STUB_SUBTITLE_MSGVER_1'),\n\t\t\t},\n\t\t};\n\n\t\tconst options: TabOptions = { ...defaults, ...tabOptions };\n\t\toptions.id = 'search';\n\t\toptions.stubOptions.autoShow = false;\n\n\t\tsuper(dialog, options);\n\n\t\t// eslint-disable-next-line no-param-reassign\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 if (!this.getSearchLoader().isShown())\n\t\t{\n\t\t\tthis.toggleEmptyResult();\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\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\n\t\t\tif (matchSortA !== null && matchSortB === null)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tif (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\n\t\t\tif (contextSortA === null && contextSortB !== null)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif (contextSortA !== null && contextSortB !== null)\n\t\t\t{\n\t\t\t\treturn contextSortB - contextSortA;\n\t\t\t}\n\n\t\t\tconst globalSortA = a.getItem().getGlobalSort();\n\t\t\tconst globalSortB = b.getItem().getGlobalSort();\n\n\t\t\tif (globalSortA !== null && globalSortB === null)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tif (globalSortA === null && globalSortB !== null)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif (globalSortA !== null && globalSortB !== null)\n\t\t\t{\n\t\t\t\treturn globalSortB - globalSortA;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t});\n\n\t\tthis.getRootNode().disableRender();\n\n\t\tmatchResults.forEach((matchResult: MatchResult) => {\n\t\t\tconst item = matchResult.getItem();\n\t\t\tif (!this.getRootNode().hasItem(item))\n\t\t\t{\n\t\t\t\tconst node = this.getRootNode().addItem(item);\n\t\t\t\tnode.setHighlights(matchResult.getMatchFields());\n\t\t\t}\n\t\t});\n\n\t\tthis.getRootNode().enableRender();\n\t\tthis.getRootNode().render(true);\n\t}\n\n\tgetDynamicEntities(searchQuery: SearchQuery): string[]\n\t{\n\t\tconst result = [];\n\n\t\tthis.getDialog().getEntities().forEach((entity: Entity) => {\n\t\t\tif (entity.isSearchable())\n\t\t\t{\n\t\t\t\tconst hasCacheLimit = entity.getSearchCacheLimits().some((pattern: RegExp) => {\n\t\t\t\t\treturn pattern.test(searchQuery.getQuery());\n\t\t\t\t});\n\n\t\t\t\tif (hasCacheLimit)\n\t\t\t\t{\n\t\t\t\t\tresult.push(entity.getId());\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tisQueryCacheable(searchQuery: SearchQuery): boolean\n\t{\n\t\treturn searchQuery.isCacheable() && !searchQuery.hasDynamicSearch();\n\t}\n\n\tisQueryLoaded(searchQuery: SearchQuery): boolean\n\t{\n\t\tlet found = false;\n\t\tthis.queryCache.forEach((query) => {\n\t\t\tif (found === false && searchQuery.getQuery().startsWith(query))\n\t\t\t{\n\t\t\t\tfound = true;\n\t\t\t}\n\t\t});\n\n\t\treturn found;\n\t}\n\n\taddCacheQuery(searchQuery: SearchQuery): void\n\t{\n\t\tif (this.isQueryCacheable(searchQuery))\n\t\t{\n\t\t\tthis.queryCache.add(searchQuery.getQuery());\n\t\t}\n\t}\n\n\tremoveCacheQuery(searchQuery: SearchQuery): void\n\t{\n\t\tthis.queryCache.delete(searchQuery.getQuery());\n\t}\n\n\tshouldLoad(searchQuery: SearchQuery): boolean\n\t{\n\t\tif (!this.isQueryCacheable(searchQuery))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!this.getDialog().hasDynamicSearch())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !this.isQueryLoaded(searchQuery);\n\t}\n\n\tload(searchQuery: SearchQuery): void\n\t{\n\t\tif (!this.shouldLoad(searchQuery))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// if (this.queryXhr)\n\t\t// {\n\t\t// \tthis.queryXhr.abort();\n\t\t// }\n\n\t\tthis.addCacheQuery(searchQuery);\n\n\t\tthis.getStub().hide();\n\t\tthis.getSearchLoader().show();\n\n\t\tAjax.runAction('ui.entityselector.doSearch', {\n\t\t\tjson: {\n\t\t\t\tdialog: this.getDialog().getAjaxJson(),\n\t\t\t\tsearchQuery: searchQuery.getAjaxJson(),\n\t\t\t},\n\t\t\tonrequeststart: (xhr) => {\n\t\t\t\tthis.queryXhr = xhr;\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontext: this.getDialog().getContext(),\n\t\t\t},\n\t\t})\n\t\t\t.then((response: AjaxResponse) => {\n\t\t\t\tthis.getSearchLoader().hide();\n\n\t\t\t\tif (!response || !response.data || !response.data.dialog || !response.data.dialog.items)\n\t\t\t\t{\n\t\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\t\tthis.toggleEmptyResult();\n\t\t\t\t\tthis.getDialog().emit('SearchTab:onLoad', { searchTab: this });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (response.data.searchQuery && response.data.searchQuery.cacheable === false)\n\t\t\t\t{\n\t\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\t\tif (this.getLastSearchQuery()?.getQuery() !== searchQuery.getQuery())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.loadWithDebounce();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (Type.isArrayFilled(response.data.dialog.items))\n\t\t\t\t{\n\t\t\t\t\tconst items = new Set();\n\t\t\t\t\tresponse.data.dialog.items.forEach((itemOptions: ItemOptions) => {\n\t\t\t\t\t\tdelete itemOptions.tabs;\n\t\t\t\t\t\tdelete itemOptions.children;\n\n\t\t\t\t\t\tconst item = this.getDialog().addItem(itemOptions);\n\t\t\t\t\t\titems.add(item);\n\t\t\t\t\t});\n\n\t\t\t\t\tconst isTabEmpty = this.isEmptyResult();\n\n\t\t\t\t\tconst matchResults = SearchEngine.matchItems(\n\t\t\t\t\t\t[...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\tif (Type.isArrayFilled(response.data.dialog.errors))\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().emitEntityErrors(response.data.dialog.errors);\n\t\t\t\t}\n\n\t\t\t\tthis.toggleEmptyResult();\n\n\t\t\t\tthis.getDialog().emit('SearchTab:onLoad', { searchTab: this });\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.removeCacheQuery(searchQuery);\n\t\t\t\tthis.getSearchLoader().hide();\n\t\t\t\tthis.toggleEmptyResult();\n\n\t\t\t\tconsole.error(error);\n\t\t\t});\n\t}\n\n\tgetSearchLoader(): SearchLoader\n\t{\n\t\treturn this.searchLoader;\n\t}\n\n\tclearResults(): void\n\t{\n\t\tthis.getRootNode().removeChildren();\n\t}\n\n\tisEmptyResult(): boolean\n\t{\n\t\treturn !this.getRootNode().hasChildren();\n\t}\n\n\ttoggleEmptyResult(): void\n\t{\n\t\tif (this.isEmptyResult())\n\t\t{\n\t\t\tthis.getStub().show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getStub().hide();\n\t\t}\n\t}\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { 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';\nimport type { EntityErrorOptions } from '../entity/entity-error-options';\n\nimport Item from '../item/item';\nimport Tab from './tabs/tab';\nimport Entity from '../entity/entity';\nimport EntityErrorCollection from '../entity/entity-error-collection';\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<string, Map<string, Item>> = new Map();\n\ttabs: Map<string, Entity> = new Map();\n\tentities: Map<string, Entity> = new Map();\n\ttargetNode: HTMLElement = null;\n\tpopup: Popup = null;\n\tcache = new Cache.MemoryCache();\n\tmultiple: boolean = true;\n\thideOnSelect: boolean = null;\n\thideOnDeselect: boolean = null;\n\taddTagOnSelect: boolean = null;\n\tclearSearchOnSelect: boolean = true;\n\tcontext: string = null;\n\tselectedItems: Set<Item> = new Set();\n\tpreselectedItems: ItemId[] = [];\n\tundeselectedItems: ItemId[] = [];\n\tdropdownMode: boolean = false;\n\n\tfrozen: boolean = false;\n\tfrozenProps: { [propName: string]: any } = {};\n\n\thideByEsc: boolean = true;\n\tautoHide: boolean = true;\n\tautoHideHandler: Function = null;\n\toffsetTop: number = 5;\n\toffsetLeft: number = 0;\n\tcacheable: boolean = true;\n\n\twidth: number = 565;\n\theight: number = 420;\n\n\tmaxLabelWidth: number = 160;\n\tminLabelWidth: number = 45;\n\talwaysShowLabels: boolean = false;\n\n\tshowAvatars: boolean = true;\n\tcompactView: boolean = false;\n\n\tactiveTab: Tab = null;\n\trecentTab: Tab = null;\n\tsearchTab: Tab = null;\n\n\trendered: boolean = false;\n\n\tloadState: LoadState = LoadState.UNSENT;\n\tloader: ?Loader = null;\n\n\ttagSelector: ?TagSelector = null;\n\ttagSelectorMode: ?TagSelectorMode = null;\n\ttagSelectorHeight: ?number = null;\n\n\tsaveRecentItemsWithDebounce: Function = Runtime.debounce(this.saveRecentItems, 2000, this);\n\trecentItemsToSave = [];\n\trecentItemsLimit: ?number = null;\n\n\tnavigation: Navigation = null;\n\theader: BaseHeader = null;\n\tfooter: BaseFooter = null;\n\tpopupOptions: PopupOptions = {};\n\n\tfocusOnFirst: boolean = true;\n\tfocusedNode: ItemNode = null;\n\n\tclearUnavailableItems: boolean = false;\n\toverlappingObserver: MutationObserver = null;\n\toffsetAnimation: boolean = true;\n\n\tstatic getById(id: string): ?Dialog\n\t{\n\t\treturn instances.get(id) || null;\n\t}\n\n\tstatic getInstances(): Dialog[]\n\t{\n\t\treturn Array.from(instances.values());\n\t}\n\n\tconstructor(dialogOptions: DialogOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.EntitySelector.Dialog');\n\n\t\tconst options: DialogOptions = Type.isPlainObject(dialogOptions) ? dialogOptions : {};\n\t\tthis.id = Type.isStringFilled(options.id) ? options.id : `ui-selector-${Text.getRandom().toLowerCase()}`;\n\t\tthis.multiple = Type.isBoolean(options.multiple) ? options.multiple : true;\n\t\tthis.context = Type.isStringFilled(options.context) ? options.context : null;\n\t\tthis.clearUnavailableItems = options.clearUnavailableItems === true;\n\t\tthis.compactView = options.compactView === true;\n\t\tthis.dropdownMode = Type.isBoolean(options.dropdownMode) ? options.dropdownMode : false;\n\t\tthis.alwaysShowLabels = Type.isBoolean(options.alwaysShowLabels) ? options.alwaysShowLabels : false;\n\n\t\tif (Type.isArray(options.entities))\n\t\t{\n\t\t\toptions.entities.forEach((entity) => {\n\t\t\t\tthis.addEntity(entity);\n\t\t\t});\n\t\t}\n\n\t\tif (options.tagSelector instanceof TagSelector)\n\t\t{\n\t\t\tthis.tagSelectorMode = TagSelectorMode.OUTSIDE;\n\t\t\tthis.setTagSelector(options.tagSelector);\n\t\t}\n\t\telse if (options.enableSearch === true)\n\t\t{\n\t\t\tconst defaultOptions = {\n\t\t\t\tplaceholder: Loc.getMessage('UI_TAG_SELECTOR_SEARCH_PLACEHOLDER'),\n\t\t\t\tmaxHeight: 102, // three lines\n\t\t\t\ttextBoxWidth: 105,\n\t\t\t};\n\t\t\tconst customOptions = Type.isPlainObject(options.tagSelectorOptions) ? options.tagSelectorOptions : {};\n\t\t\tconst mandatoryOptions = {\n\t\t\t\tdialogOptions: null,\n\t\t\t\tshowTextBox: true,\n\t\t\t\tshowAddButton: false,\n\t\t\t\tshowCreateButton: false,\n\t\t\t\tmultiple: this.isMultiple(),\n\t\t\t};\n\n\t\t\tconst tagSelectorOptions = Object.assign(defaultOptions, customOptions, mandatoryOptions);\n\t\t\tconst tagSelector = new TagSelector(tagSelectorOptions);\n\t\t\tthis.tagSelectorMode = TagSelectorMode.INSIDE;\n\t\t\tthis.setTagSelector(tagSelector);\n\t\t}\n\n\t\tthis.setTargetNode(options.targetNode);\n\t\tthis.setHideOnSelect(options.hideOnSelect);\n\t\tthis.setHideOnDeselect(options.hideOnDeselect);\n\t\tthis.setAddTagOnSelect(options.addTagOnSelect);\n\t\tthis.setClearSearchOnSelect(options.clearSearchOnSelect);\n\t\tthis.setWidth(options.width);\n\t\tvoid this.setHeight(options.height);\n\t\tthis.setAutoHide(options.autoHide);\n\t\tthis.setAutoHideHandler(options.autoHideHandler);\n\t\tthis.setHideByEsc(options.hideByEsc);\n\t\tthis.setOffsetLeft(options.offsetLeft);\n\t\tthis.setOffsetTop(options.offsetTop);\n\t\tthis.setCacheable(options.cacheable);\n\t\tthis.setFocusOnFirst(options.focusOnFirst);\n\t\tthis.setShowAvatars(options.showAvatars);\n\t\tthis.setRecentItemsLimit(options.recentItemsLimit);\n\t\tthis.setOffsetAnimation(options.offsetAnimation);\n\n\t\tthis.recentTab = new RecentTab(this, options.recentTabOptions);\n\t\tthis.searchTab = new SearchTab(this, options.searchTabOptions, options.searchOptions);\n\n\t\tthis.addTab(this.recentTab);\n\t\tthis.addTab(this.searchTab);\n\n\t\tthis.setPreselectedItems(options.preselectedItems);\n\t\tthis.setUndeselectedItems(options.undeselectedItems);\n\n\t\tthis.setOptions(options);\n\n\t\tconst preload = options.preload === true || this.getPreselectedItems().length > 0;\n\t\tif (preload)\n\t\t{\n\t\t\tthis.load();\n\t\t}\n\n\t\tif (Type.isPlainObject(options.popupOptions))\n\t\t{\n\t\t\tconst allowedOptions = new Set([\n\t\t\t\t'overlay',\n\t\t\t\t'bindOptions',\n\t\t\t\t'targetContainer',\n\t\t\t\t'zIndexOptions',\n\t\t\t\t'events',\n\t\t\t\t'animation',\n\t\t\t\t'className',\n\t\t\t]);\n\n\t\t\tconst popupOptions = {};\n\n\t\t\tObject.keys(options.popupOptions).forEach((option: string) => {\n\t\t\t\tif (allowedOptions.has(option))\n\t\t\t\t{\n\t\t\t\t\tpopupOptions[option] = options.popupOptions[option];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.popupOptions = popupOptions;\n\t\t}\n\n\t\tthis.navigation = new Navigation(this);\n\n\t\t(new SliderIntegration(this));\n\n\t\tthis.subscribe('ItemNode:onFocus', this.handleItemNodeFocus.bind(this));\n\t\tthis.subscribe('ItemNode:onUnfocus', this.handleItemNodeUnfocus.bind(this));\n\n\t\tthis.subscribeFromOptions(options.events);\n\n\t\tinstances.set(this.id, this);\n\t}\n\n\tshow(): void\n\t{\n\t\tthis.load();\n\t\tthis.getPopup().show();\n\t}\n\n\thide(): void\n\t{\n\t\tthis.getPopup().close();\n\t}\n\n\tdestroy(): void\n\t{\n\t\tif (this.destroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.destroyed = true;\n\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\n\t\tthis.destroyed = true;\n\t}\n\n\tisOpen(): boolean\n\t{\n\t\treturn this.popup && this.popup.isShown();\n\t}\n\n\tadjustPosition(): void\n\t{\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().adjustPosition();\n\t\t}\n\t}\n\n\tsearch(queryString: string): void\n\t{\n\t\tconst query = Type.isStringFilled(queryString) ? queryString.trim() : '';\n\n\t\tconst event = new BaseEvent({ data: { query } });\n\t\tthis.emit('onBeforeSearch', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Type.isStringFilled(query))\n\t\t{\n\t\t\tthis.selectFirstTab();\n\t\t\tif (this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.getSearchTab().clearResults();\n\t\t\t}\n\t\t}\n\t\telse if (this.getSearchTab())\n\t\t{\n\t\t\tthis.selectTab(this.getSearchTab().getId());\n\t\t\tthis.getSearchTab().search(query);\n\t\t}\n\n\t\tthis.emit('onSearch', { query });\n\t}\n\n\taddItem(options: ItemOptions): Item\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\tthrow new Error('EntitySelector.addItem: wrong item options.');\n\t\t}\n\n\t\tlet item = this.getItem(options);\n\t\tif (!item)\n\t\t{\n\t\t\titem = new Item(options);\n\n\t\t\tconst undeselectable = this.getUndeselectedItems().some((itemId: ItemId) => {\n\t\t\t\treturn itemId[0] === item.getEntityId() && String(itemId[1]) === String(item.getId());\n\t\t\t});\n\n\t\t\tif (undeselectable)\n\t\t\t{\n\t\t\t\titem.setDeselectable(false);\n\t\t\t}\n\n\t\t\titem.setDialog(this);\n\n\t\t\tconst entity = this.getEntity(item.getEntityId());\n\t\t\tif (entity === null)\n\t\t\t{\n\t\t\t\tthis.addEntity({ id: item.getEntityId() });\n\t\t\t}\n\n\t\t\tlet entityItems = this.items.get(item.getEntityId());\n\t\t\tif (!entityItems)\n\t\t\t{\n\t\t\t\tentityItems = new Map();\n\t\t\t\tthis.items.set(item.getEntityId(), entityItems);\n\t\t\t}\n\n\t\t\tentityItems.set(String(item.getId()), item);\n\n\t\t\tif (item.isSelected())\n\t\t\t{\n\t\t\t\tthis.handleItemSelect(item);\n\t\t\t}\n\t\t}\n\n\t\tlet tabs = [];\n\t\tif (Type.isArray(options.tabs))\n\t\t{\n\t\t\ttabs = options.tabs;\n\t\t}\n\t\telse if (Type.isStringFilled(options.tabs))\n\t\t{\n\t\t\ttabs = [options.tabs];\n\t\t}\n\n\t\tconst children = Type.isArray(options.children) ? options.children : [];\n\n\t\ttabs.forEach((tabId) => {\n\t\t\tconst tab = this.getTab(tabId);\n\t\t\tif (tab)\n\t\t\t{\n\t\t\t\tconst itemNode = tab.getRootNode().addItem(item, options.nodeOptions);\n\t\t\t\titemNode.addChildren(children);\n\t\t\t}\n\t\t});\n\n\t\treturn item;\n\t}\n\n\tremoveItem(item: Item | ItemOptions): ?Item\n\t{\n\t\titem = this.getItem(item);\n\t\tif (item)\n\t\t{\n\t\t\tthis.handleItemDeselect(item);\n\n\t\t\titem.getNodes().forEach((node: ItemNode) => {\n\t\t\t\tnode.getParentNode().removeChild(node);\n\t\t\t});\n\n\t\t\tconst entityItems = this.getEntityItemsInternal(item.getEntityId());\n\t\t\tif (entityItems)\n\t\t\t{\n\t\t\t\tentityItems.delete(String(item.getId()));\n\t\t\t\tif (entityItems.size === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.items.delete(item.getEntityId());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tremoveItems(): void\n\t{\n\t\tthis.getItemsInternal().forEach((items: Map<string, Item>) => {\n\t\t\titems.forEach((item: Item) => {\n\t\t\t\tthis.removeItem(item);\n\t\t\t});\n\t\t});\n\t}\n\n\tgetItem(item: ItemId | Item | ItemOptions): ?Item\n\t{\n\t\tlet id = null;\n\t\tlet entityId = null;\n\n\t\tif (Type.isArray(item) && item.length === 2)\n\t\t{\n\t\t\t[entityId, id] = item;\n\t\t}\n\t\telse if (item instanceof Item)\n\t\t{\n\t\t\tid = item.getId();\n\t\t\tentityId = item.getEntityId();\n\t\t}\n\t\telse if (Type.isObjectLike(item))\n\t\t{\n\t\t\t({ id, entityId } = item);\n\t\t}\n\n\t\tconst entityItems = this.getEntityItemsInternal(entityId);\n\t\tif (entityItems)\n\t\t{\n\t\t\treturn entityItems.get(String(id)) || null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetSelectedItems(): Item[]\n\t{\n\t\treturn Array.from(this.selectedItems);\n\t}\n\n\tgetItems(): Item[]\n\t{\n\t\tconst items = [];\n\t\tthis.getItemsInternal().forEach((entityItems: Map<string, Item>) => {\n\t\t\tArray.prototype.push.apply(items, Array.from(entityItems.values()));\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tgetItemsInternal(): Map<string, Map<string, Item>>\n\t{\n\t\treturn this.items;\n\t}\n\n\tgetEntityItems(entityId: string): Item[]\n\t{\n\t\tconst items = this.getEntityItemsInternal(entityId);\n\n\t\treturn items === null ? [] : Array.from(items.values());\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tgetEntityItemsInternal(entityId: string): Map<string, Item> | null\n\t{\n\t\treturn this.items.get(entityId) || null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tvalidateItemIds(itemIds: ItemId[]): ItemId[]\n\t{\n\t\tif (!Type.isArrayFilled(itemIds))\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\tconst result = [];\n\t\titemIds.forEach((itemId: ItemId) => {\n\t\t\tif (!Type.isArray(itemId) || itemId.length !== 2)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [entityId, id] = itemId;\n\n\t\t\tif (Type.isStringFilled(entityId) && (Type.isStringFilled(id) || Type.isNumber(id)))\n\t\t\t{\n\t\t\t\tresult.push(itemId);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\taddTab(tab: Tab | TabOptions): Tab\n\t{\n\t\tif (Type.isPlainObject(tab))\n\t\t{\n\t\t\ttab = new Tab(this, tab);\n\t\t}\n\n\t\tif (!(tab instanceof Tab))\n\t\t{\n\t\t\tthrow new Error('EntitySelector: a tab must be an instance of EntitySelector.Tab.');\n\t\t}\n\n\t\tif (this.getTab(tab.getId()))\n\t\t{\n\t\t\tconsole.error(`EntitySelector: the \"${tab.getId()}\" tab is already existed.`);\n\t\t\treturn tab;\n\t\t}\n\n\t\ttab.setDialog(this);\n\t\tthis.tabs.set(tab.getId(), tab);\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.insertTab(tab);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\tgetTabs(): Tab[]\n\t{\n\t\treturn Array.from(this.tabs.values());\n\t}\n\n\tgetTab(id: string): ?Tab\n\t{\n\t\treturn this.tabs.get(id) || null;\n\t}\n\n\tgetRecentTab(): RecentTab\n\t{\n\t\treturn this.recentTab;\n\t}\n\n\tgetSearchTab(): SearchTab\n\t{\n\t\treturn this.searchTab;\n\t}\n\n\tselectTab(id: string): ?Tab\n\t{\n\t\tconst newActiveTab = this.getTab(id);\n\t\tif (!newActiveTab || newActiveTab === this.getActiveTab())\n\t\t{\n\t\t\treturn newActiveTab;\n\t\t}\n\n\t\tif (this.getActiveTab())\n\t\t{\n\t\t\tthis.getActiveTab().deselect();\n\t\t}\n\n\t\tthis.activeTab = newActiveTab;\n\t\tnewActiveTab.select();\n\n\t\tif (!newActiveTab.isRendered())\n\t\t{\n\t\t\tnewActiveTab.render();\n\t\t}\n\n\t\trequestAnimationFrame(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.focusSearch();\n\t\t\t});\n\t\t});\n\n\t\tthis.clearNodeFocus();\n\t\tif (this.shouldFocusOnFirst())\n\t\t{\n\t\t\tthis.focusOnFirstNode();\n\t\t}\n\n\t\tthis.adjustHeader();\n\t\tthis.adjustFooter();\n\n\t\treturn newActiveTab;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tinsertTab(tab: Tab): void\n\t{\n\t\ttab.renderLabel();\n\t\ttab.renderContainer();\n\n\t\tDom.append(tab.getLabelContainer(), this.getLabelsContainer());\n\t\tDom.append(tab.getContainer(), this.getTabContentsContainer());\n\n\t\tif (tab.getHeader())\n\t\t{\n\t\t\tDom.append(tab.getHeader().getContainer(), this.getHeaderContainer());\n\t\t}\n\n\t\tif (tab.getFooter())\n\t\t{\n\t\t\tDom.append(tab.getFooter().getContainer(), this.getFooterContainer());\n\t\t}\n\t}\n\n\tselectFirstTab(onlyVisible = true): ?Tab\n\t{\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = 0; i < tabs.length; i++)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible === false || tab.isVisible())\n\t\t\t{\n\t\t\t\treturn this.selectTab(tab.getId());\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDropdownMode())\n\t\t{\n\t\t\treturn this.selectTab(this.getRecentTab().getId());\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tselectLastTab(onlyVisible = true): ?Tab\n\t{\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = tabs.length - 1; i >= 0; i--)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible === false || tab.isVisible())\n\t\t\t{\n\t\t\t\treturn this.selectTab(tab.getId());\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDropdownMode())\n\t\t{\n\t\t\treturn this.selectTab(this.getRecentTab().getId());\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetActiveTab(): ?Tab\n\t{\n\t\treturn this.activeTab;\n\t}\n\n\tgetNextTab(onlyVisible = true): ?Tab\n\t{\n\t\tlet nextTab = null;\n\t\tlet activeFound = false;\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i =  0; i < tabs.length; i++)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible && !tab.isVisible())\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (tab === this.getActiveTab())\n\t\t\t{\n\t\t\t\tactiveFound = true;\n\t\t\t}\n\t\t\telse if (activeFound)\n\t\t\t{\n\t\t\t\tnextTab = tab;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn nextTab;\n\t}\n\n\tgetPreviousTab(onlyVisible = true): ?Tab\n\t{\n\t\tlet previousTab = null;\n\t\tlet activeFound = false;\n\t\tconst tabs = this.getTabs();\n\t\tfor (let i = tabs.length - 1; i >= 0; i--)\n\t\t{\n\t\t\tconst tab = tabs[i];\n\t\t\tif (onlyVisible && !tab.isVisible())\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (tab === this.getActiveTab())\n\t\t\t{\n\t\t\t\tactiveFound = true;\n\t\t\t}\n\t\t\telse if (activeFound)\n\t\t\t{\n\t\t\t\tpreviousTab = tab;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn previousTab;\n\t}\n\n\tremoveTab(id: string): void\n\t{\n\t\tconst tab = this.getTab(id);\n\t\tif (!tab)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\ttab.getRootNode().removeChildren();\n\n\t\tthis.tabs.delete(id);\n\n\t\tDom.remove(tab.getLabelContainer(), this.getLabelsContainer());\n\t\tDom.remove(tab.getContainer(), this.getTabContentsContainer());\n\n\t\tif (tab.getHeader())\n\t\t{\n\t\t\tDom.remove(tab.getHeader().getContainer(), this.getHeaderContainer());\n\t\t}\n\n\t\tif (tab.getFooter())\n\t\t{\n\t\t\tDom.remove(tab.getFooter().getContainer(), this.getFooterContainer());\n\t\t}\n\n\t\tthis.selectFirstTab();\n\t}\n\n\taddEntity(entity: Entity | EntityOptions): Entity\n\t{\n\t\tif (Type.isPlainObject(entity))\n\t\t{\n\t\t\tentity = new Entity(entity);\n\t\t}\n\n\t\tif (!(entity instanceof Entity))\n\t\t{\n\t\t\tthrow new Error('EntitySelector: an entity must be an instance of EntitySelector.Entity.');\n\t\t}\n\n\t\tif (this.hasEntity(entity.getId()))\n\t\t{\n\t\t\tconsole.error(`EntitySelector: the \"${entity.getId()}\" entity is already existed.`);\n\t\t\treturn entity;\n\t\t}\n\n\t\tthis.entities.set(entity.getId(), entity);\n\n\t\treturn entity;\n\t}\n\n\tgetEntity(id: string): ?Entity\n\t{\n\t\treturn this.entities.get(id) || null;\n\t}\n\n\thasEntity(id: string): boolean\n\t{\n\t\treturn this.entities.has(id);\n\t}\n\n\tgetEntities(): Entity[]\n\t{\n\t\treturn Array.from(this.entities.values());\n\t}\n\n\tremoveEntity(id: string): void\n\t{\n\t\tthis.removeEntityItems(id);\n\t\tthis.entities.delete(id);\n\t}\n\n\tremoveEntityItems(id: string): void\n\t{\n\t\tconst items = this.getEntityItemsInternal(id);\n\t\tif (items)\n\t\t{\n\t\t\titems.forEach((item: Item) => {\n\t\t\t\tthis.removeItem(item);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetHeader(): ?BaseHeader\n\t{\n\t\treturn this.header;\n\t}\n\n\tgetActiveHeader(): ?BaseHeader\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.getActiveTab().getHeader())\n\t\t{\n\t\t\treturn this.getActiveTab().getHeader();\n\t\t}\n\n\t\treturn this.getHeader() && this.getActiveTab().canShowDefaultHeader() ? this.getHeader() : null;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tadjustHeader(): void\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getActiveTab().getHeader())\n\t\t{\n\t\t\tif (this.getHeader())\n\t\t\t{\n\t\t\t\tthis.getHeader().hide();\n\t\t\t}\n\n\t\t\tthis.getActiveTab().getHeader().show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getHeader())\n\t\t\t{\n\t\t\t\tif (this.getActiveTab().canShowDefaultHeader())\n\t\t\t\t{\n\t\t\t\t\tthis.getHeader().show();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getHeader().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetHeader(headerContent: ?HeaderContent, headerOptions?: HeaderOptions): ?BaseHeader\n\t{\n\t\t/** @var {BaseHeader} */\n\t\tlet header = null;\n\t\tif (headerContent !== null)\n\t\t{\n\t\t\theader = this.constructor.createHeader(this, headerContent, headerOptions);\n\t\t\tif (header === null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getHeader() !== null)\n\t\t{\n\t\t\tDom.remove(this.getHeader().getContainer());\n\t\t\tthis.adjustHeader();\n\t\t}\n\n\t\tthis.header = header;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.appendHeader(header);\n\t\t\tthis.adjustHeader();\n\t\t}\n\n\t\treturn header;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tappendHeader(header: BaseHeader): void\n\t{\n\t\tif (header instanceof BaseHeader)\n\t\t{\n\t\t\tDom.append(header.getContainer(), this.getHeaderContainer());\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tstatic createHeader(context: Dialog | Tab, headerContent: HeaderContent, headerOptions?: HeaderOptions): ?BaseHeader\n\t{\n\t\tif (\n\t\t\t!Type.isStringFilled(headerContent) &&\n\t\t\t!Type.isArrayFilled(headerContent) &&\n\t\t\t!Type.isDomNode(headerContent) &&\n\t\t\t!Type.isFunction(headerContent)\n\t\t)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\t/** @var {BaseHeader} */\n\t\tlet header = null;\n\t\tconst options = Type.isPlainObject(headerOptions) ? headerOptions : {};\n\n\t\tif (Type.isFunction(headerContent) || Type.isString(headerContent))\n\t\t{\n\t\t\tconst className = Type.isString(headerContent) ? Reflection.getClass(headerContent) : headerContent;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\theader = new className(context, options);\n\t\t\t\tif (!(header instanceof BaseHeader))\n\t\t\t\t{\n\t\t\t\t\tconsole.error('EntitySelector: header is not an instance of BaseHeader.');\n\t\t\t\t\theader = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (headerContent !== null && !header)\n\t\t{\n\t\t\theader = new DefaultHeader(context, Object.assign({}, options, { content: headerContent }));\n\t\t}\n\n\t\treturn header;\n\t}\n\n\tgetFooter(): ?BaseFooter\n\t{\n\t\treturn this.footer;\n\t}\n\n\tgetActiveFooter(): ?BaseFooter\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.getActiveTab().getFooter())\n\t\t{\n\t\t\treturn this.getActiveTab().getFooter();\n\t\t}\n\n\t\treturn this.getFooter() && this.getActiveTab().canShowDefaultFooter() ? this.getFooter() : null;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tadjustFooter(): void\n\t{\n\t\tif (!this.getActiveTab())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getActiveTab().getFooter())\n\t\t{\n\t\t\tif (this.getFooter())\n\t\t\t{\n\t\t\t\tthis.getFooter().hide();\n\t\t\t}\n\n\t\t\tthis.getActiveTab().getFooter().show();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getFooter())\n\t\t\t{\n\t\t\t\tif (this.getActiveTab().canShowDefaultFooter())\n\t\t\t\t{\n\t\t\t\t\tthis.getFooter().show();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getFooter().hide();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetFooter(footerContent: ?FooterContent, footerOptions?: FooterOptions): ?BaseFooter\n\t{\n\t\t/** @var {BaseFooter} */\n\t\tlet footer = null;\n\t\tif (footerContent !== null)\n\t\t{\n\t\t\tfooter = this.constructor.createFooter(this, footerContent, footerOptions);\n\t\t\tif (footer === null)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isRendered() && this.getFooter() !== null)\n\t\t{\n\t\t\tDom.remove(this.getFooter().getContainer());\n\t\t\tthis.adjustFooter();\n\t\t}\n\n\t\tthis.footer = footer;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.appendFooter(footer);\n\t\t\tthis.adjustFooter();\n\t\t}\n\n\t\treturn footer;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tappendFooter(footer: BaseFooter): void\n\t{\n\t\tif (footer instanceof BaseFooter)\n\t\t{\n\t\t\tDom.append(footer.getContainer(), this.getFooterContainer());\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tstatic createFooter(context: Dialog | Tab, footerContent: FooterContent, footerOptions?: FooterOptions): ?BaseFooter\n\t{\n\t\tif (\n\t\t\t!Type.isStringFilled(footerContent) &&\n\t\t\t!Type.isArrayFilled(footerContent) &&\n\t\t\t!Type.isDomNode(footerContent) &&\n\t\t\t!Type.isFunction(footerContent)\n\t\t)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\t/** @var {BaseFooter} */\n\t\tlet footer = null;\n\t\tconst options = Type.isPlainObject(footerOptions) ? footerOptions : {};\n\n\t\tif (Type.isFunction(footerContent) || Type.isString(footerContent))\n\t\t{\n\t\t\tconst className = Type.isString(footerContent) ? Reflection.getClass(footerContent) : footerContent;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\tfooter = new className(context, options);\n\t\t\t\tif (!(footer instanceof BaseFooter))\n\t\t\t\t{\n\t\t\t\t\tconsole.error('EntitySelector: footer is not an instance of BaseFooter.');\n\t\t\t\t\tfooter = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (footerContent !== null && !footer)\n\t\t{\n\t\t\tfooter = new DefaultFooter(context, Object.assign({}, options, { content: footerContent }));\n\t\t}\n\n\t\treturn footer;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetContext(): ?string\n\t{\n\t\treturn this.context;\n\t}\n\n\tgetNavigation(): Navigation\n\t{\n\t\treturn this.navigation;\n\t}\n\n\tdeselectAll(): void\n\t{\n\t\tthis.getSelectedItems().forEach((item: Item) => {\n\t\t\titem.deselect();\n\t\t});\n\t}\n\n\tisMultiple(): boolean\n\t{\n\t\treturn this.multiple;\n\t}\n\n\tsetTargetNode(node: HTMLElement | { left: number, top: number } | null | MouseEvent): void\n\t{\n\t\tif (!Type.isDomNode(node) && !Type.isNull(node) && !Type.isObject(node))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.targetNode = node;\n\n\t\tif (this.isRendered())\n\t\t{\n\t\t\tthis.getPopup().setBindElement(this.targetNode);\n\t\t\tthis.getPopup().adjustPosition();\n\t\t}\n\t}\n\n\tgetTargetNode(): ?HTMLElement\n\t{\n\t\tif (this.targetNode === null)\n\t\t{\n\t\t\tif (this.getTagSelectorMode() === TagSelectorMode.OUTSIDE)\n\t\t\t{\n\t\t\t\treturn this.getTagSelector().getOuterContainer();\n\t\t\t}\n\t\t}\n\n\t\treturn this.targetNode;\n\t}\n\n\tsetHideOnSelect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.hideOnSelect = flag;\n\t\t}\n\t}\n\n\tshouldHideOnSelect(): boolean\n\t{\n\t\tif (this.hideOnSelect !== null)\n\t\t{\n\t\t\treturn this.hideOnSelect;\n\t\t}\n\n\t\treturn !this.isMultiple();\n\t}\n\n\tsetHideOnDeselect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.hideOnDeselect = flag;\n\t\t}\n\t}\n\n\tshouldHideOnDeselect(): boolean\n\t{\n\t\tif (this.hideOnDeselect !== null)\n\t\t{\n\t\t\treturn this.hideOnDeselect;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tsetClearSearchOnSelect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.clearSearchOnSelect = flag;\n\t\t}\n\t}\n\n\tshouldClearSearchOnSelect(): boolean\n\t{\n\t\treturn this.clearSearchOnSelect;\n\t}\n\n\tsetAddTagOnSelect(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.addTagOnSelect = flag;\n\t\t}\n\t}\n\n\tshouldAddTagOnSelect(): boolean\n\t{\n\t\tif (this.addTagOnSelect !== null)\n\t\t{\n\t\t\treturn this.addTagOnSelect;\n\t\t}\n\n\t\treturn this.isMultiple() || this.isTagSelectorOutside();\n\t}\n\n\tsetShowAvatars(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.showAvatars = flag;\n\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getTabs().forEach((tab: Tab) => {\n\t\t\t\t\ttab.renderContainer();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldShowAvatars(): boolean\n\t{\n\t\treturn this.showAvatars;\n\t}\n\n\tsetRecentItemsLimit(recentItemsLimit: number): void\n\t{\n\t\tif (Type.isNumber(recentItemsLimit) && recentItemsLimit > 0)\n\t\t{\n\t\t\tthis.recentItemsLimit = recentItemsLimit;\n\t\t}\n\t}\n\n\tgetRecentItemsLimit(): ?number\n\t{\n\t\treturn this.recentItemsLimit;\n\t}\n\n\tsetOffsetAnimation(flag: boolean): any\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.offsetAnimation = flag;\n\n\t\t\tif (this.isRendered() && !this.offsetAnimation)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-offset-animation');\n\t\t\t}\n\t\t}\n\t}\n\n\tisCompactView(): boolean\n\t{\n\t\treturn this.compactView;\n\t}\n\n\tsetAutoHide(enable: boolean): void\n\t{\n\t\tif (Type.isBoolean(enable))\n\t\t{\n\t\t\tthis.autoHide = enable;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setAutoHide(enable);\n\t\t\t}\n\t\t}\n\t}\n\n\tisAutoHide(): boolean\n\t{\n\t\treturn this.autoHide;\n\t}\n\n\tsetAutoHideHandler(handler?: (event: MouseEvent, dialog: Dialog) => boolean): void\n\t{\n\t\tif (Type.isFunction(handler) || handler === null)\n\t\t{\n\t\t\tthis.autoHideHandler = handler;\n\t\t}\n\t}\n\n\tsetHideByEsc(enable: boolean): void\n\t{\n\t\tif (Type.isBoolean(enable))\n\t\t{\n\t\t\tthis.hideByEsc = enable;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setClosingByEsc(enable);\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldHideByEsc(): boolean\n\t{\n\t\treturn this.hideByEsc;\n\t}\n\n\tgetWidth(): number\n\t{\n\t\treturn this.width;\n\t}\n\n\tsetWidth(width: number): void\n\t{\n\t\tif (Type.isNumber(width) && width > 0)\n\t\t{\n\t\t\tthis.width = width;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'width', `${width}px`);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetHeight(): number\n\t{\n\t\treturn this.height;\n\t}\n\n\tsetHeight(height: number): Promise\n\t{\n\t\tif (Type.isNumber(height) && height > 0)\n\t\t{\n\t\t\tthis.height = height;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tDom.style(this.getContainer(), 'height', `${height}px`);\n\t\t\t\treturn Animation.handleTransitionEnd(this.getContainer(), 'height');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\n\tgetOffsetLeft(): number\n\t{\n\t\treturn this.offsetLeft;\n\t}\n\n\tsetOffsetLeft(offset: number): void\n\t{\n\t\tif (Type.isNumber(offset) && offset >= 0)\n\t\t{\n\t\t\tthis.offsetLeft = offset;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setOffset({ offsetLeft: offset });\n\t\t\t\tthis.adjustPosition();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetOffsetTop(): number\n\t{\n\t\treturn this.offsetTop;\n\t}\n\n\tsetOffsetTop(offset: number): void\n\t{\n\t\tif (Type.isNumber(offset) && offset >= 0)\n\t\t{\n\t\t\tthis.offsetTop = offset;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setOffset({ offsetTop: offset });\n\t\t\t\tthis.adjustPosition();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetZindex(): number\n\t{\n\t\treturn this.getPopup().getZindex();\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\tsetCacheable(cacheable: boolean): void\n\t{\n\t\tif (Type.isBoolean(cacheable))\n\t\t{\n\t\t\tthis.cacheable = cacheable;\n\t\t\tif (this.isRendered())\n\t\t\t{\n\t\t\t\tthis.getPopup().setCacheable(cacheable);\n\t\t\t}\n\t\t}\n\t}\n\n\tshouldFocusOnFirst(): boolean\n\t{\n\t\treturn this.focusOnFirst;\n\t}\n\n\tsetFocusOnFirst(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.focusOnFirst = flag;\n\t\t}\n\t}\n\n\tfocusOnFirstNode(): ?ItemNode\n\t{\n\t\tif (this.getActiveTab())\n\t\t{\n\t\t\tconst itemNode = this.getActiveTab().getRootNode().getFirstChild();\n\t\t\tif (itemNode)\n\t\t\t{\n\t\t\t\titemNode.focus();\n\n\t\t\t\treturn itemNode;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetFocusedNode(): ?ItemNode\n\t{\n\t\treturn this.focusedNode;\n\t}\n\n\tclearNodeFocus(): void\n\t{\n\t\tif (this.focusedNode)\n\t\t{\n\t\t\tthis.focusedNode.unfocus();\n\t\t\tthis.focusedNode = null;\n\t\t}\n\t}\n\n\tisDropdownMode(): boolean\n\t{\n\t\treturn this.dropdownMode;\n\t}\n\n\tsetPreselectedItems(itemIds: ItemId[]): void\n\t{\n\t\tthis.preselectedItems = this.validateItemIds(itemIds);\n\t}\n\n\tgetPreselectedItems(): ItemId[]\n\t{\n\t\treturn this.preselectedItems;\n\t}\n\n\tsetUndeselectedItems(itemIds: ItemId[]): void\n\t{\n\t\tthis.undeselectedItems = this.validateItemIds(itemIds);\n\t}\n\n\tgetUndeselectedItems()\n\t{\n\t\treturn this.undeselectedItems;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetOptions(dialogOptions: DialogOptions): void\n\t{\n\t\tconst options = Type.isPlainObject(dialogOptions) ? dialogOptions : {};\n\n\t\tif (Type.isArray(options.tabs))\n\t\t{\n\t\t\toptions.tabs.forEach((tab) => {\n\t\t\t\tthis.addTab(tab);\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isArray(options.selectedItems))\n\t\t{\n\t\t\toptions.selectedItems.forEach((itemOptions: ItemOptions) => {\n\t\t\t\tconst options = Object.assign({}, Type.isPlainObject(itemOptions) ? itemOptions : {});\n\t\t\t\toptions.selected = true;\n\t\t\t\tthis.addItem(options);\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isArray(options.items))\n\t\t{\n\t\t\toptions.items.forEach((itemOptions: ItemOptions) => {\n\t\t\t\tthis.addItem(itemOptions);\n\t\t\t});\n\t\t}\n\n\t\tthis.setHeader(options.header, options.headerOptions);\n\t\tthis.setFooter(options.footer, options.footerOptions);\n\t}\n\n\tgetMaxLabelWidth(): number\n\t{\n\t\treturn this.maxLabelWidth;\n\t}\n\n\tgetMinLabelWidth(): number\n\t{\n\t\treturn this.minLabelWidth;\n\t}\n\n\texpandLabels(animate: boolean = true): void\n\t{\n\t\tconst freeSpace = parseInt(this.getPopup().getPopupContainer().style.left, 10);\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\tif (animate)\n\t\t\t{\n\t\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\t\t\tDom.style(this.getLabelsContainer(), 'max-width', `${Math.min(freeSpace, this.getMaxLabelWidth())}px`);\n\t\t\t\tAnimation.handleTransitionEnd(this.getLabelsContainer(), 'max-width').then(() => {\n\t\t\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\t\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\t\t\t\t}).catch(() => {\n\t\t\t\t\t// fail silently\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.style(this.getLabelsContainer(), 'max-width', `${Math.min(freeSpace, this.getMaxLabelWidth())}px`);\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\tcollapseLabels(animate: boolean = true): void\n\t{\n\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-show');\n\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--active');\n\t\tif (animate)\n\t\t{\n\t\t\tDom.addClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\t\tAnimation.handleTransitionEnd(this.getLabelsContainer(), 'max-width').then(() => {\n\t\t\t\tDom.removeClass(this.getLabelsContainer(), 'ui-selector-tab-labels--animate-hide');\n\t\t\t}).catch(() => {\n\t\t\t\t// fail silently\n\t\t\t});\n\t\t}\n\n\t\tDom.style(this.getLabelsContainer(), 'max-width', null);\n\t}\n\n\tgetTagSelector(): ?TagSelector\n\t{\n\t\treturn this.tagSelector;\n\t}\n\n\tgetTagSelectorMode(): ?TagSelectorMode\n\t{\n\t\treturn this.tagSelectorMode;\n\t}\n\n\tisTagSelectorInside(): boolean\n\t{\n\t\treturn this.getTagSelector() && this.getTagSelectorMode() === TagSelectorMode.INSIDE;\n\t}\n\n\tisTagSelectorOutside(): boolean\n\t{\n\t\treturn this.getTagSelector() && this.getTagSelectorMode() === TagSelectorMode.OUTSIDE;\n\t}\n\n\tgetTagSelectorQuery(): string\n\t{\n\t\treturn this.getTagSelector() ? this.getTagSelector().getTextBoxValue() : '';\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetTagSelector(tagSelector: TagSelector): void\n\t{\n\t\tthis.tagSelector = tagSelector;\n\n\t\tthis.tagSelector.subscribe('onInput', Runtime.debounce(this.handleTagSelectorInput, 200, this));\n\t\tthis.tagSelector.subscribe('onAddButtonClick', this.handleTagSelectorAddButtonClick.bind(this));\n\t\tthis.tagSelector.subscribe('onTagRemove', this.handleTagSelectorTagRemove.bind(this));\n\t\tthis.tagSelector.subscribe('onAfterTagRemove', this.handleTagSelectorAfterTagRemove.bind(this));\n\t\tthis.tagSelector.subscribe('onAfterTagAdd', this.handleTagSelectorAfterTagAdd.bind(this));\n\t\tthis.tagSelector.subscribe('onContainerClick', this.handleTagSelectorClick.bind(this));\n\n\t\tthis.tagSelector.setDialog(this);\n\t}\n\n\tfocusSearch(): void\n\t{\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tif (this.getActiveTab() !== this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.getTagSelector().clearTextBox();\n\t\t\t}\n\n\t\t\tthis.getTagSelector().focusTextBox();\n\t\t}\n\t}\n\n\tclearSearch(): void\n\t{\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tthis.getTagSelector().clearTextBox();\n\n\t\t\tif (this.getActiveTab() === this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.selectFirstTab();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetLoader(): Loader\n\t{\n\t\tif (this.loader === null)\n\t\t{\n\t\t\tthis.loader = new Loader({\n\t\t\t\ttarget: this.getTabsContainer(),\n\t\t\t\tsize: 100\n\t\t\t});\n\t\t}\n\n\t\treturn this.loader;\n\t}\n\n\tshowLoader(): void\n\t{\n\t\tvoid this.getLoader().show();\n\t}\n\n\thideLoader(): void\n\t{\n\t\tif (this.loader !== null)\n\t\t{\n\t\t\tvoid this.getLoader().hide();\n\t\t}\n\t}\n\n\tdestroyLoader(): void\n\t{\n\t\tif (this.loader !== null)\n\t\t{\n\t\t\tthis.getLoader().destroy();\n\t\t}\n\n\t\tthis.loader = null;\n\t}\n\n\tgetPopup(): Popup\n\t{\n\t\tif (this.popup !== null)\n\t\t{\n\t\t\treturn this.popup;\n\t\t}\n\n\t\tthis.getTabs().forEach((tab: Tab) => {\n\t\t\tthis.insertTab(tab);\n\t\t});\n\n\t\tconst popupOptions = { ...this.popupOptions };\n\t\tconst userEvents = popupOptions.events;\n\t\tdelete popupOptions.events;\n\n\t\tthis.popup = new Popup({\n\t\t\tcontentPadding: 0,\n\t\t\tpadding: 0,\n\t\t\toffsetTop: this.getOffsetTop(),\n\t\t\toffsetLeft: this.getOffsetLeft(),\n\t\t\tanimation: {\n\t\t\t\tshowClassName: 'ui-selector-popup-animation-show',\n\t\t\t\tcloseClassName: 'ui-selector-popup-animation-close',\n\t\t\t\tcloseAnimationType: 'animation',\n\t\t\t},\n\t\t\tbindElement: this.getTargetNode(),\n\t\t\tbindOptions: {\n\t\t\t\tforceBindPosition: true,\n\t\t\t},\n\t\t\tautoHide: this.isAutoHide(),\n\t\t\tautoHideHandler: this.handleAutoHide.bind(this),\n\t\t\tcloseByEsc: this.shouldHideByEsc(),\n\t\t\tcacheable: this.isCacheable(),\n\t\t\tevents: {\n\t\t\t\tonFirstShow: this.handlePopupFirstShow.bind(this),\n\t\t\t\tonShow: this.handlePopupShow.bind(this),\n\t\t\t\tonAfterShow: this.handlePopupAfterShow.bind(this),\n\t\t\t\tonAfterClose: this.handlePopupAfterClose.bind(this),\n\t\t\t\tonDestroy: this.handlePopupDestroy.bind(this),\n\t\t\t},\n\t\t\tcontent: this.getContainer(),\n\t\t\t...popupOptions,\n\t\t});\n\n\t\tthis.popup.subscribeFromOptions(userEvents);\n\n\t\tthis.rendered = true;\n\n\t\tthis.selectFirstTab();\n\n\t\treturn this.popup;\n\t}\n\n\tisRendered(): boolean\n\t{\n\t\treturn this.rendered;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\n\t\t\tlet searchContainer = '';\n\t\t\tif (this.getTagSelectorMode() === TagSelectorMode.INSIDE)\n\t\t\t{\n\t\t\t\tsearchContainer = Tag.render`<div class=\"ui-selector-search\"></div>`;\n\n\t\t\t\tthis.getTagSelector().renderTo(searchContainer);\n\t\t\t}\n\n\t\t\tconst className = this.isCompactView() ? ' ui-selector-dialog--compact-view' : '';\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ui-selector-dialog${className}\"\n\t\t\t\t\tstyle=\"width:${this.getWidth()}px; height:${this.getHeight()}px;\"\n\t\t\t\t>\n\t\t\t\t\t${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</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTabsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('tabs-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-tabs\">\n\t\t\t\t\t${this.getTabContentsContainer()}\n\t\t\t\t\t${this.getLabelsContainer()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetTabContentsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('tab-contents', () => {\n\t\t\treturn Tag.render`<div class=\"ui-selector-tab-contents\"></div>`;\n\t\t});\n\t}\n\n\tgetLabelsContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('labels-container', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ui-selector-tab-labels\"\n\t\t\t\t\tonmouseenter=\"${this.alwaysShowLabels ? null : this.handleLabelsMouseEnter.bind(this)}\"\n\t\t\t\t\tonmouseleave=\"${this.alwaysShowLabels ? null : this.handleLabelsMouseLeave.bind(this)}\"\n\t\t\t\t></div>\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<div class=\"ui-selector-header-container\">${header ? header : ''}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetFooterContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('footer', () => {\n\t\t\tconst footer = this.getFooter() && this.getFooter().getContainer();\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-selector-footer-container\">${footer ? footer : ''}</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tfreeze(): void\n\t{\n\t\tif (this.isFrozen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.frozenProps = {\n\t\t\tautoHide: this.isAutoHide(),\n\t\t\thideByEsc: this.shouldHideByEsc(),\n\t\t};\n\n\t\tthis.setAutoHide(false);\n\t\tthis.setHideByEsc(false);\n\n\t\tthis.getNavigation().disable();\n\t\tDom.addClass(this.getContainer(), 'ui-selector-dialog--freeze');\n\n\t\tthis.frozen = true;\n\t}\n\n\tunfreeze(): void\n\t{\n\t\tif (!this.isFrozen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAutoHide(this.frozenProps.autoHide !== false);\n\t\tthis.setHideByEsc(this.frozenProps.hideByEsc !== false);\n\n\t\tthis.getNavigation().enable();\n\t\tDom.removeClass(this.getContainer(), 'ui-selector-dialog--freeze');\n\n\t\tthis.frozen = false;\n\t}\n\n\tisFrozen(): boolean\n\t{\n\t\treturn this.frozen;\n\t}\n\n\thasRecentItems(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax\n\t\t\t\t.runAction('ui.entityselector.load', {\n\t\t\t\t\tjson: {\n\t\t\t\t\t\tdialog: this.getAjaxJson()\n\t\t\t\t\t},\n\t\t\t\t\tgetParameters: {\n\t\t\t\t\t\tcontext: this.getContext()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tresolve(\n\t\t\t\t\t\tresponse.data && response.data.dialog && Type.isArrayFilled(response.data.dialog.recentItems)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n\n\tload(): void\n\t{\n\t\tif (this.loadState !== LoadState.UNSENT || !this.hasDynamicLoad())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tthis.getTagSelector().lock();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.destroyed)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\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 (this.destroyed)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (response && response.data && Type.isPlainObject(response.data.dialog))\n\t\t\t\t{\n\t\t\t\t\tthis.loadState = LoadState.DONE;\n\n\t\t\t\t\tconst entities =\n\t\t\t\t\t\tType.isArrayFilled(response.data.dialog.entities)\n\t\t\t\t\t\t\t? response.data.dialog.entities\n\t\t\t\t\t\t\t: []\n\t\t\t\t\t;\n\n\t\t\t\t\tentities.forEach((entityOptions: EntityOptions) => {\n\t\t\t\t\t\tconst entity = this.getEntity(entityOptions.id);\n\t\t\t\t\t\tif (entity)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentity.setDynamicSearch(entityOptions.dynamicSearch);\n\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.setOptions(response.data.dialog);\n\n\t\t\t\t\tthis.getPreselectedItems().forEach((preselectedItem: ItemId) => {\n\t\t\t\t\t\tconst item = this.getItem(preselectedItem);\n\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem.select(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst recentItems = response.data.dialog.recentItems;\n\t\t\t\t\tif (Type.isArray(recentItems))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst nodeOptionsMap: Map<Item, ItemNodeOptions> = new Map();\n\t\t\t\t\t\tconst itemsOptions: ItemOptions[] = response.data.dialog.items;\n\t\t\t\t\t\tif (Type.isArray(itemsOptions))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemsOptions.forEach((itemOptions: ItemOptions) => {\n\t\t\t\t\t\t\t\tif (itemOptions.nodeOptions)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconst item = this.getItem(itemOptions);\n\t\t\t\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tnodeOptionsMap.set(item, itemOptions.nodeOptions);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst items = recentItems.map((recentItem: ItemId) => {\n\t\t\t\t\t\t\tconst item = this.getItem(recentItem);\n\n\t\t\t\t\t\t\treturn [item, nodeOptionsMap.get(item)];\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis.getRecentTab().getRootNode().addItems(items);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.getRecentTab().getRootNode().hasChildren() && this.getRecentTab().getStub())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.getRecentTab().getStub().show();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.getTagSelector())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.getTagSelector().unlock();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.isRendered())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.isDropdownMode() && this.getActiveTab() === this.getRecentTab())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.selectFirstTab();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (!this.getActiveTab())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.selectFirstTab();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.focusSearch();\n\t\t\t\t\tthis.destroyLoader();\n\n\t\t\t\t\tif (this.shouldFocusOnFirst())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.focusOnFirstNode();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Type.isArrayFilled(response.data.dialog.errors))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.emitEntityErrors(response.data.dialog.errors);\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, animate: boolean = true): void\n\t{\n\t\tconst shouldAnimate: boolean = animate && this.isMultiple();\n\n\t\tthis.selectedItems.delete(item);\n\n\t\tif (this.getTagSelector())\n\t\t{\n\t\t\tthis.getTagSelector().removeTag({\n\t\t\t\tid: item.getId(),\n\t\t\t\tentityId: item.getEntityId()\n\t\t\t}, shouldAnimate);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupAfterShow(): void\n\t{\n\t\tthis.focusSearch();\n\t\tthis.adjustByTagSelector();\n\n\t\tthis.emit('onShow');\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupFirstShow(): void\n\t{\n\t\tthis.emit('onFirstShow');\n\n\t\tthis.observeTabOverlapping();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupShow(): void\n\t{\n\t\tif (this.offsetAnimation)\n\t\t{\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tDom.addClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-offset-animation');\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tif (this.alwaysShowLabels)\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\t// We have to call the method after adjustPosition()\n\t\t\t\tthis.expandLabels(false);\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event: MouseEvent): void\n\t{\n\t\tconst target = event.target;\n\t\tconst el = this.getPopup().getPopupContainer();\n\t\tif (target === el || el.contains(target))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\tthis.isTagSelectorOutside()\n\t\t\t&& target === this.getTagSelector().getTextBox()\n\t\t\t&& Type.isStringFilled(this.getTagSelector().getTextBoxValue())\n\t\t)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.autoHideHandler !== null)\n\t\t{\n\t\t\tconst result = this.autoHideHandler(event, this);\n\t\t\tif (Type.isBoolean(result))\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tobserveTabOverlapping(): void\n\t{\n\t\tthis.disconnectTabOverlapping();\n\n\t\tthis.overlappingObserver = new MutationObserver(() => {\n\t\t\tif (this.getLabelsContainer().offsetWidth > 0)\n\t\t\t{\n\t\t\t\tconst left = parseInt(this.getPopup().getPopupContainer().style.left, 10);\n\t\t\t\tif (left < this.getMinLabelWidth())\n\t\t\t\t{\n\t\t\t\t\tDom.style(this.getPopup().getPopupContainer(), 'left', `${this.getMinLabelWidth()}px`);\n\t\t\t\t\tthis.collapseLabels(false);\n\t\t\t\t}\n\t\t\t\telse if (this.alwaysShowLabels)\n\t\t\t\t{\n\t\t\t\t\tthis.expandLabels(false);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.overlappingObserver.observe(this.getPopup().getPopupContainer(), {\n\t\t\tattributes: true,\n\t\t\tattributeFilter: ['style'],\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\tdisconnectTabOverlapping(): void\n\t{\n\t\tif (this.overlappingObserver)\n\t\t{\n\t\t\tthis.overlappingObserver.disconnect();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupAfterClose(): void\n\t{\n\t\tif (this.isTagSelectorOutside())\n\t\t{\n\t\t\tif (this.getActiveTab() && this.getActiveTab() === this.getSearchTab())\n\t\t\t{\n\t\t\t\tthis.selectFirstTab();\n\t\t\t}\n\n\t\t\tthis.getTagSelector().clearTextBox();\n\t\t\tthis.getTagSelector().showAddButton();\n\t\t\tthis.getTagSelector().hideTextBox();\n\t\t}\n\n\t\tif (this.offsetAnimation)\n\t\t{\n\t\t\tDom.removeClass(this.getPopup().getPopupContainer(), 'ui-selector-popup-offset-animation');\n\t\t}\n\n\t\tthis.emit('onHide');\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupDestroy(): void\n\t{\n\t\tthis.destroy();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleLabelsMouseEnter(): void\n\t{\n\t\tthis.expandLabels();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleLabelsMouseLeave(): void\n\t{\n\t\tthis.collapseLabels();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleItemNodeFocus(event: BaseEvent): void\n\t{\n\t\tconst { node } = event.getData();\n\t\tif (this.focusedNode === node)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearNodeFocus();\n\n\t\tthis.focusedNode = node;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleItemNodeUnfocus(): void\n\t{\n\t\tthis.clearNodeFocus();\n\t}\n\n\tgetAjaxJson(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tcontext: this.getContext(),\n\t\t\tentities: this.getEntities(),\n\t\t\tpreselectedItems: this.getPreselectedItems(),\n\t\t\trecentItemsLimit: this.getRecentItemsLimit(),\n\t\t\tclearUnavailableItems: this.shouldClearUnavailableItems(),\n\t\t};\n\t}\n\n\t/** @internal */\n\temitEntityErrors(errorOptions: EntityErrorOptions[]): void\n\t{\n\t\tconst errorCollection = EntityErrorCollection.create(errorOptions);\n\n\t\tthis.emit('Entity:onError', { errors: [...errorCollection] });\n\n\t\tthis.getEntities().forEach((entity: Entity) => {\n\t\t\tconst entityId = entity.getId();\n\t\t\tthis.emit(`Entity:${entityId}:onError`, { errors: errorCollection.getByEntityId(entityId) });\n\t\t});\n\t}\n}\n","import Dialog from './dialog/dialog';\nimport EntityError from './entity/entity-error';\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\tEntityError,\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\tEntityError,\n};\n\nexport type {\n\tDialogOptions,\n\tTabOptions,\n\tItemOptions,\n\tEntityOptions,\n\tTagSelectorOptions,\n};\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","outline","outlineOffset","link","badges","captionOptions","fitContent","maxWidth","justifyContent","badgesOptions","subtitle","supertitle","caption","setCaptionOptions","setAvatar","setAvatarOptions","setLink","linkTitle","setBadges","setBadgesOptions","setDynamic","dynamic","setOpen","open","getParentNode","getTab","getDialog","tab","parentNode","siblings","getChildren","index","getIndex","getByIndex","childOptions","tabs","childItem","addItem","childNode","addChildren","child","isChildOf","childItems","setTab","setParentNode","isRendered","renderWithDebounce","isRoot","getDepthLevel","itemNode","createNode","addChild","items","disableRender","Item","enableRender","removeChildren","isFocused","unfocus","removeNode","remove","getOuterContainer","hasChildren","node","clear","Browser","isIE","clean","getChildrenContainer","parent","getFirst","getLast","isDynamic","dynamicPromise","Ajax","runAction","json","parentItem","getAjaxJson","dialog","getParameters","context","getContext","then","response","data","loaded","catch","error","console","isLoaded","setAutoOpen","autoOpen","loader","Loader","getIndicatorContainer","getLoader","show","addClass","hide","removeClass","destroy","isOpen","loadChildren","destroyLoader","expand","showLoader","requestAnimationFrame","scrollHeight","handleTransitionEnd","offsetHeight","appendChildren","renderRoot","getTitleContainer","supertitleNode","getSupertitleNode","getSupertitleContainer","subtitleNode","getSubtitleNode","getSubtitleContainer","captionNode","getCaptionNode","getCaptionContainer","captionFitContent","getCaptionOption","captionJustifyContent","flexGrow","textAlign","captionMaxWidth","color","removeProperty","getAvatar","getAvatarContainer","backgroundImage","getAvatarOption","backgroundColor","backgroundSize","getBadgeContainer","getBadges","badge","badgesFitContent","getBadgesOption","badgesJustifyContent","badgesMaxWidth","linkTitleNode","getLinkTitleNode","getLinkTextContainer","getItemMaxDepth","classList","contains","hasVisibleChild","getAll","some","isHidden","toggleVisibility","highlight","renderChildren","isAutoOpen","rendered","stub","getStub","isAutoShow","hasDynamicLoad","previousSibling","insertAfter","hidden","option","isUndefined","value","setCaptionOption","setAvatarOption","replaceMacros","getLink","setBadgesOption","cache","remember","isSelected","div","appendChild","getItemsContainer","handleClick","handleMouseEnter","handleMouseLeave","getTitlesContainer","getLinkContainer","getTitleBoxContainer","anchor","href","handleLinkClick","span","highlights","getHighlights","matchField","getField","fieldName","getName","isCustom","mark","getMatches","focused","emit","collapse","isDeselectable","deselect","shouldHideOnDeselect","select","shouldClearSearchOnSelect","clearSearch","shouldHideOnSelect","focusSearch","tabContainer","nodeContainer","tabRect","getPosition","nodeRect","margin","top","scrollTop","bottom","click","stopPropagation","focus","showLink","hideLink","constructor","setAttribute","attr","offsetWidth","scrollWidth","replace","SearchFieldIndex","getIndexes","WordIndex","word","setWord","setStartIndex","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboMarksExtendedRange","rsComboMarksSupplementRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsBreak","rsCombo","rsDigit","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","join","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","unicodeWordsRegExp","RegExp","asciiWordRegExp","hasUnicodeWordRegExp","nonWhitespaceRegExp","specialChars","specialCharsRegExp","SearchIndex","fieldIndex","entity","getEntity","isSearchable","searchFields","getSearchFields","textNode","stripTags","createIndex","getTitle","getSubtitle","getSupertitle","getCaption","customData","repeat","wordIndexes","splitText","isArrayFilled","fillComplexWords","fillNonCharWords","position","indexOf","substr","hasUnicodeWord","splitUnicodeText","splitAsciiText","splitTextInternal","test","regExp","lastIndex","exec","complexWord","currentIndex","currentArrayIndex","nextIndex","sameWord","getWord","char","includes","wordToIndex","EntityFilter","filterOptions","id","getId","getOptions","Entity","entityOptions","Map","defaultOptions","getEntityDefaultOptions","merge","JSON","parse","stringify","itemOptions","tagOptions","substituteEntityId","filters","addFilter","fieldA","fieldB","getSort","setDynamicLoad","dynamicLoad","setDynamicSearch","dynamicSearch","setSearchFields","setSearchCacheLimits","searchCacheLimits","entityType","getOptionInternal","entityTypeBadges","getItemOption","getEntityType","conditions","condition","optionNodes","textNodes","undefined","itemOption","titleField","subtitleField","customFields","limits","limit","Array","from","filter","hasDynamicSearch","getFilters","getSubstituteEntityId","getExtensions","extension","settings","Extension","getSettings","entities","extensions","entityId","getDefaultOptions","getItemOptions","getTagOptions","TypeUtils","entries","obj","isMap","key","_classPrivateMethodInitSpec","selected","createMapFromOptions","setSaveable","saveable","setDeselectable","deselectable","setHidden","setContextSort","contextSort","setGlobalSort","globalSort","getEntityId","addEntity","resetSearchIndex","_classPrivateMethodGet","getEntityTextNode","getEntityItemOption","Loc","getMessage","nodes","preselectedMode","emitEvents","BaseEvent","isDefaultPrevented","handleItemSelect","getNodes","saveRecentItem","handleItemDeselect","getTagSelector","tag","getTag","searchIndex","create","getTagOption","getOptionTextNode","useItemOptions","fn","toPascalCase","getEntityTagOption","getTagGlobalOption","toJSON","getTagAvatar","getTagAvatarOptions","getTagLink","getTagMaxWidth","getTagTextColor","getTagBgColor","fontWeight","getTagFontWeight","onclick","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","EntityError","BaseError","Symbol","iterator","EntityErrorCollection","_classPrivateFieldInitSpec","errorOptions","errorCollection","errorOption","setEntityId","message","setMessage","isNil","code","setCode","setCustomData","TagItem","setMaxWidth","setFontWeight","setClickable","clickable","selector","getSelector","selectorAvatarOption","getTagAvatarOption","entityTagAvatarOptions","entityItemAvatarOptions","width","getTagClickable","getContentContainer","hasAvatar","getMaxWidth","getFontWeight","getRemoveIcon","handleContainerClick","isClickable","getOnclick","handleRemoveIconClick","animate","handleAnimationEnd","removeTag","replaceAll","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","setTagClickable","tagClickable","dialogOptions","selectedItems","concat","assign","tagSelectorOptions","isMultiple","tagSelector","addTag","subscribeFromOptions","events","getTextBox","disabled","isLocked","changed","updateTags","tagItem","getTags","find","isObjectLike","setSelector","removeTags","tags","insertBefore","toggleAddButtonCaption","el","isDomNode","isReadonly","getMaxHeight","getCreateButton","getAddButton","input","getPlaceholder","handleTextBoxInput","handleTextBoxBlur","handleTextBoxKeyUp","handleTextBoxKeyDown","getTextBoxWidth","getItemsHeight","getMinHeight","textBoxOldValue","autoHide","setTagAvatarOption","height","getAddButtonLink","getActualButtonCaption","handleAddButtonClick","getAddButtonCaptionMore","getAddButtonCaption","handleCreateButtonClick","getCreateButtonCaption","newValue","getTextBoxValue","clearTextBox","hideTextBox","preventDefault","isMac","metaKey","ctrlKey","hideAddButton","focusTextBox","EventEmitter","Navigation","subscribe","handleDialogShow","handleDialogHide","handleDialogDestroy","handleDocumentKeyDown","handleDocumentMouseMove","isEnabled","bindEvents","enabled","unbindEvents","unlockTab","getActiveNode","nextNode","currentNode","getFirstChild","getNextSibling","previousNode","getPreviousSibling","lastChild","getLastChild","getActiveTab","lastNode","getFocusedNode","scrollIntoView","activeTab","lockedTab","lock","unlock","enable","disable","altKey","keyName","keyMap","getSearchTab","call","lockTab","firstNode","getFirstNode","focusOnNode","getNextNode","getLastNode","getPreviousNode","selectFirstTab","shiftKey","previousTab","getPreviousTab","selectLastTab","nextTab","getNextTab","SliderIntegration","handleSliderOpen","handleSliderClose","handleSliderDestroy","BX","unsubscribe","slider","getFrameWindow","sliders","unfreeze","sliderEvent","getData","getSlider","isDialogInSlider","freeze","DefaultHeader","setContent","getContent","containerStyles","content","DefaultFooter","RecentTab","defaults","isDropdownMode","MatchResult","queryWords","matchFields","fieldSort","collator","Intl","Collator","sensitivity","SearchEngine","searchQuery","matchResults","getQueryWords","getResultLimit","matchResult","matchItem","results","matchWord","searchIndexes","getSearchIndex","j","compare","SearchQuery","query","split","cacheable","resultLimit","getDynamicSearchEntities","hasDynamicSearchEntity","dynamicSearchEntities","getQuery","SearchLoader","getBoxContainer","getSpacerContainer","getTextContainer","isShown","SearchTabFooter","handleOnSearch","handleMetaEnter","getQueryContainer","getLoaderContainer","label","finalize","hideLoader","emitAsync","getLastSearchQuery","clearResults","createItem","keyboardEvent","SearchTab","searchOptions","setAllowCreateItem","allowCreateItem","loadWithDebounce","load","dynamicEntities","getDynamicEntities","setDynamicSearchEntities","isEmpty","getSearchLoader","lastSearchQuery","matchItems","getItems","appendResults","shouldFocusOnFirst","focusOnFirstNode","shouldLoad","isEmptyResult","toggleEmptyResult","matchSortA","matchSortB","contextSortA","contextSortB","globalSortA","globalSortB","hasItem","setHighlights","getMatchFields","getEntities","hasCacheLimit","getSearchCacheLimits","pattern","isCacheable","found","queryCache","startsWith","isQueryCacheable","isQueryLoaded","addCacheQuery","onrequeststart","xhr","queryXhr","removeCacheQuery","searchTab","isTabEmpty","errors","emitEntityErrors","searchLoader","LoadState","TagSelectorMode","instances","UNSENT","saveRecentItems","clearUnavailableItems","compactView","dropdownMode","alwaysShowLabels","tagSelectorMode","OUTSIDE","setTagSelector","enableSearch","customOptions","mandatoryOptions","INSIDE","setTargetNode","targetNode","setHideOnSelect","hideOnSelect","setHideOnDeselect","hideOnDeselect","setAddTagOnSelect","addTagOnSelect","setClearSearchOnSelect","clearSearchOnSelect","setWidth","setHeight","setAutoHide","setAutoHideHandler","autoHideHandler","setHideByEsc","hideByEsc","setOffsetLeft","offsetLeft","setOffsetTop","offsetTop","setCacheable","setFocusOnFirst","focusOnFirst","setRecentItemsLimit","recentItemsLimit","setOffsetAnimation","offsetAnimation","recentTab","recentTabOptions","searchTabOptions","addTab","setPreselectedItems","preselectedItems","setUndeselectedItems","undeselectedItems","setOptions","preload","getPreselectedItems","popupOptions","allowedOptions","navigation","handleItemNodeFocus","handleItemNodeUnfocus","getPopup","close","destroyed","disconnectTabOverlapping","hasOwnProperty","setPrototypeOf","popup","adjustPosition","queryString","search","undeselectable","getUndeselectedItems","itemId","String","entityItems","tabId","removeChild","getEntityItemsInternal","getItemsInternal","removeItem","prototype","apply","itemIds","insertTab","newActiveTab","clearNodeFocus","getLabelsContainer","getTabContentsContainer","getHeaderContainer","getFooterContainer","onlyVisible","getTabs","getRecentTab","activeFound","hasEntity","removeEntityItems","canShowDefaultHeader","canShowDefaultFooter","getSelectedItems","isNull","setBindElement","getTagSelectorMode","isTagSelectorOutside","getPopupContainer","setClosingByEsc","setOffset","getZindex","focusedNode","validateItemIds","maxLabelWidth","minLabelWidth","freeSpace","parseInt","left","getMinLabelWidth","getMaxLabelWidth","handleTagSelectorInput","handleTagSelectorAddButtonClick","handleTagSelectorTagRemove","handleTagSelectorAfterTagRemove","handleTagSelectorAfterTagAdd","handleTagSelectorClick","getTabsContainer","userEvents","Popup","contentPadding","padding","getOffsetTop","getOffsetLeft","animation","showClassName","closeClassName","closeAnimationType","bindElement","getTargetNode","bindOptions","forceBindPosition","isAutoHide","handleAutoHide","closeByEsc","shouldHideByEsc","onFirstShow","handlePopupFirstShow","onShow","handlePopupShow","onAfterShow","handlePopupAfterShow","onAfterClose","handlePopupAfterClose","onDestroy","handlePopupDestroy","searchContainer","isCompactView","getWidth","getHeight","handleLabelsMouseEnter","handleLabelsMouseLeave","isFrozen","frozenProps","getNavigation","frozen","reject","recentItems","loadState","setTimeout","isLoading","LOADING","DONE","preselectedItem","nodeOptionsMap","itemsOptions","recentItem","addItems","recentItemsToSave","saveRecentItemsWithDebounce","adjustByTagSelector","newTagSelectorHeight","calcHeight","tagSelectorHeight","shouldAnimate","deselectAll","shouldAddTagOnSelect","createTag","observeTabOverlapping","expandLabels","overlappingObserver","MutationObserver","collapseLabels","observe","attributes","attributeFilter","disconnect","getRecentItemsLimit","shouldClearUnavailableItems","getByEntityId","EntitySelector"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit