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