Your IP : 3.144.146.56


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/main/popup/dist/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/main/popup/dist/main.popup.bundle.js.map

{"version":3,"file":"main.popup.bundle.js","sources":["../src/compatibility/button.js","../src/popup/position-event.js","../src/popup/popup-close-icon-size.js","../src/popup/popup.js","../src/popup/popup-manager.js","../src/menu/menu-item.js","../src/menu/menu.js","../src/menu/menu-manager.js","../src/compatibility/popup-window.js","../src/compatibility/popup-window-button.js","../src/compatibility/buttonlink.js","../src/compatibility/popup-window-button-link.js","../src/compatibility/custombutton.js","../src/compatibility/popup-window-custom-button.js","../src/compatibility/popup-menu-window.js","../src/compatibility/popup-menu-item.js","../src/compatibility/input-popup.js","../src/index.js"],"sourcesContent":["import { Type, Dom } from 'main.core';\n\ndeclare type ButtonOptions = {\n\tid?: string,\n\ttext?: string,\n\tclassName?: string,\n\tevents?: { [event: string]: (event) => {} }\n};\n\n/**\n * @memberOf BX.Main.Popup\n * @deprecated use BX.UI.Button\n */\nexport default class Button\n{\n\tconstructor(params: ButtonOptions)\n\t{\n\t\tthis.popupWindow = null;\n\n\t\tthis.params = params || {};\n\n\t\tthis.text = this.params.text || '';\n\t\tthis.id = this.params.id || '';\n\t\tthis.className = this.params.className || '';\n\t\tthis.events = this.params.events || {};\n\n\t\tthis.contextEvents = {};\n\t\tfor (let eventName in this.events)\n\t\t{\n\t\t\tif (Type.isFunction(this.events[eventName]))\n\t\t\t{\n\t\t\t\tthis.contextEvents[eventName] = this.events[eventName].bind(this);\n\t\t\t}\n\t\t}\n\n\t\tthis.buttonNode = Dom.create(\n\t\t\t'span',\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: 'popup-window-button' + (this.className.length > 0 ? ' ' + this.className : ''),\n\t\t\t\t\tid: this.id\n\t\t\t\t},\n\t\t\t\tevents: this.contextEvents,\n\t\t\t\ttext: this.text\n\t\t\t}\n\t\t);\n\t}\n\n\trender(): Element\n\t{\n\t\treturn this.buttonNode;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetContainer(): Element\n\t{\n\t\treturn this.buttonNode;\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.text;\n\t}\n\n\tsetName(name: string)\n\t{\n\t\tthis.text = name || '';\n\t\tif (this.buttonNode)\n\t\t{\n\t\t\tDom.clean(this.buttonNode);\n\t\t\tDom.adjust(this.buttonNode, { text: this.text });\n\t\t}\n\t}\n\n\tsetClassName(className: string)\n\t{\n\t\tif (this.buttonNode)\n\t\t{\n\t\t\tif (Type.isString(this.className) && (this.className !== ''))\n\t\t\t{\n\t\t\t\tDom.removeClass(this.buttonNode, this.className);\n\t\t\t}\n\n\t\t\tDom.addClass(this.buttonNode, className);\n\t\t}\n\n\t\tthis.className = className;\n\t}\n\n\taddClassName(className: string)\n\t{\n\t\tif (this.buttonNode)\n\t\t{\n\t\t\tDom.addClass(this.buttonNode, className);\n\t\t\tthis.className = this.buttonNode.className;\n\t\t}\n\t}\n\n\tremoveClassName(className: string)\n\t{\n\t\tif (this.buttonNode)\n\t\t{\n\t\t\tDom.removeClass(this.buttonNode, className);\n\t\t\tthis.className = this.buttonNode.className;\n\t\t}\n\t}\n}","import { Type } from 'main.core';\nimport { BaseEvent } from 'main.core.events';\n\nexport default class PositionEvent extends BaseEvent\n{\n\t#left: number;\n\t#top: number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\tget left(): number\n\t{\n\t\treturn this.#left;\n\t}\n\n\tset left(value: number)\n\t{\n\t\tif (Type.isNumber(value))\n\t\t{\n\t\t\tthis.#left = value;\n\t\t}\n\t}\n\n\tget top(): number\n\t{\n\t\treturn this.#top;\n\t}\n\n\tset top(value: number): void\n\t{\n\t\tif (Type.isNumber(value))\n\t\t{\n\t\t\tthis.#top = value;\n\t\t}\n\t}\n}","/**\n * @namespace {BX.Main.Popup}\n */\nconst CloseIconSize = Object.freeze({\n\tLARGE: 'large',\n\tSMALL: 'small',\n})\n\nexport default CloseIconSize;","import Button from '../compatibility/button';\n\nimport { Type, Text, Tag, Event, Dom, Browser, Reflection } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\nimport { type PopupOptions, type PopupTarget, type PopupAnimationOptions } from './popup-types';\nimport { ZIndexManager, ZIndexComponent } from 'main.core.z-index-manager';\nimport PositionEvent from './position-event';\nimport CloseIconSize from './popup-close-icon-size';\n\ndeclare type TargetPosition = {\n\tleft: number,\n\ttop: number,\n\tbottom: number,\n\twindowSize: number,\n\twindowScroll: number,\n\tpopupWidth: number,\n\tpopupHeight: number\n};\n\nconst aliases = {\n\tonPopupWindowInit: { namespace: 'BX.Main.Popup', eventName: 'onInit' },\n\tonPopupWindowIsInitialized: { namespace: 'BX.Main.Popup', eventName: 'onAfterInit' },\n\tonPopupFirstShow: { namespace: 'BX.Main.Popup', eventName: 'onFirstShow' },\n\tonPopupShow: { namespace: 'BX.Main.Popup', eventName: 'onShow' },\n\tonAfterPopupShow: { namespace: 'BX.Main.Popup', eventName: 'onAfterShow' },\n\tonPopupClose: { namespace: 'BX.Main.Popup', eventName: 'onClose' },\n\tonPopupAfterClose: { namespace: 'BX.Main.Popup', eventName: 'onAfterClose' },\n\tonPopupDestroy: { namespace: 'BX.Main.Popup', eventName: 'onDestroy' },\n\tonPopupFullscreenLeave: { namespace: 'BX.Main.Popup', eventName: 'onFullscreenLeave' },\n\tonPopupFullscreenEnter: { namespace: 'BX.Main.Popup', eventName: 'onFullscreenEnter' },\n\tonPopupDragStart: { namespace: 'BX.Main.Popup', eventName: 'onDragStart' },\n\tonPopupDrag: { namespace: 'BX.Main.Popup', eventName: 'onDrag' },\n\tonPopupDragEnd: { namespace: 'BX.Main.Popup', eventName: 'onDragEnd' },\n\tonPopupResizeStart: { namespace: 'BX.Main.Popup', eventName: 'onResizeStart' },\n\tonPopupResize: { namespace: 'BX.Main.Popup', eventName: 'onResize' },\n\tonPopupResizeEnd: { namespace: 'BX.Main.Popup', eventName: 'onResizeEnd' }\n};\n\nEventEmitter.registerAliases(aliases);\n\nconst disabledScrolls: WeakMap<HTMLElement, Set<Popup>> = new WeakMap();\n\n/**\n * @memberof BX.Main\n */\nexport default class Popup extends EventEmitter\n{\n\t/**\n\t * @private\n\t */\n\tstatic options = {};\n\n\t/**\n\t * @private\n\t */\n\tstatic defaultOptions = {\n\n\t\t//left offset for popup about target\n\t\tangleLeftOffset: 40,\n\n\t\t//when popup position is 'top' offset distance between popup body and target node\n\t\tpositionTopXOffset: -11,\n\n\t\t//offset distance between popup body and target node if use angle, sum with positionTopXOffset\n\t\tangleTopOffset: 10,\n\n\t\tpopupZindex: 1000,\n\t\tpopupOverlayZindex: 1100,\n\n\t\tangleMinLeft: 10,\n\t\tangleMaxLeft: 30,\n\n\t\tangleMinRight: 10,\n\t\tangleMaxRight: 30,\n\n\t\tangleMinBottom: 23,\n\t\tangleMaxBottom: 25,\n\n\t\tangleMinTop: 23,\n\t\tangleMaxTop: 25,\n\n\t\toffsetLeft: 0,\n\t\toffsetTop: 0\n\t};\n\n\tstatic setOptions(options: { [name: string]: any })\n\t{\n\t\tif (!Type.isPlainObject(options))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let option in options)\n\t\t{\n\t\t\tthis.options[option] = options[option];\n\t\t}\n\t}\n\n\tstatic getOption(option: string, defaultValue?: 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\t\telse\n\t\t{\n\t\t\treturn this.defaultOptions[option];\n\t\t}\n\t}\n\n\tconstructor(options?: PopupOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Main.Popup');\n\n\t\tlet [popupId: string, bindElement: PopupTarget, params: PopupOptions] = arguments; //compatible arguments\n\n\t\tthis.compatibleMode = params && Type.isBoolean(params.compatibleMode) ? params.compatibleMode : true;\n\t\tif (Type.isPlainObject(options) && !bindElement && !params)\n\t\t{\n\t\t\tparams = options;\n\t\t\tpopupId = options.id;\n\t\t\tbindElement = options.bindElement;\n\t\t\tthis.compatibleMode = false;\n\t\t}\n\n\t\tparams = params || {};\n\t\tthis.params = params;\n\n\t\tif (!Type.isStringFilled(popupId))\n\t\t{\n\t\t\tpopupId = 'popup-window-' + Text.getRandom().toLowerCase();\n\t\t}\n\n\t\tthis.emit('onInit', new BaseEvent({ compatData: [popupId, bindElement, params] }));\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tthis.uniquePopupId = popupId;\n\t\tthis.params.zIndex = Type.isNumber(params.zIndex) ? parseInt(params.zIndex) : 0;\n\t\tthis.params.zIndexAbsolute = Type.isNumber(params.zIndexAbsolute) ? parseInt(params.zIndexAbsolute) : 0;\n\t\tthis.buttons = params.buttons && Type.isArray(params.buttons) ? params.buttons : [];\n\t\tthis.offsetTop = Popup.getOption('offsetTop');\n\t\tthis.offsetLeft = Popup.getOption('offsetLeft');\n\t\tthis.firstShow = false;\n\t\tthis.bordersWidth = 20;\n\t\tthis.bindElementPos = null;\n\t\tthis.closeIcon = null;\n\t\tthis.resizeIcon = null;\n\t\tthis.angle = null;\n\t\tthis.angleArrowElement = null;\n\t\tthis.overlay = null;\n\t\tthis.titleBar = null;\n\t\tthis.bindOptions = typeof (params.bindOptions) === 'object' ? params.bindOptions : {};\n\t\tthis.autoHide = params.autoHide === true;\n\t\tthis.disableScroll = params.disableScroll === true || params.isScrollBlock === true;\n\t\tthis.autoHideHandler = Type.isFunction(params.autoHideHandler) ? params.autoHideHandler : null;\n\t\tthis.handleAutoHide = this.handleAutoHide.bind(this);\n\t\tthis.handleOverlayClick = this.handleOverlayClick.bind(this);\n\t\tthis.isAutoHideBinded = false;\n\t\tthis.closeByEsc = params.closeByEsc === true;\n\t\tthis.isCloseByEscBinded = false;\n\t\tthis.toFrontOnShow = true;\n\n\t\tthis.cacheable = true;\n\t\tthis.destroyed = false;\n\t\tthis.fixed = false;\n\n\t\tthis.width = null;\n\t\tthis.height = null;\n\t\tthis.minWidth = null;\n\t\tthis.minHeight = null;\n\t\tthis.maxWidth = null;\n\t\tthis.maxHeight = null;\n\n\t\tthis.padding = null;\n\t\tthis.contentPadding = null;\n\t\tthis.background = null;\n\t\tthis.contentBackground = null;\n\n\t\tthis.borderRadius = null;\n\t\tthis.contentBorderRadius = null;\n\n\t\tthis.targetContainer = Type.isElementNode(params.targetContainer) ? params.targetContainer : document.body;\n\n\t\tthis.dragOptions = {\n\t\t\tcursor: '',\n\t\t\tcallback: function() {\n\t\t\t},\n\t\t\teventName: ''\n\t\t};\n\n\t\tthis.dragged = false;\n\t\tthis.dragPageX = 0;\n\t\tthis.dragPageY = 0;\n\n\t\tthis.animationShowClassName = null;\n\t\tthis.animationCloseClassName = null;\n\t\tthis.animationCloseEventType = null;\n\n\t\tthis.handleDocumentMouseMove = this.handleDocumentMouseMove.bind(this);\n\t\tthis.handleDocumentMouseUp = this.handleDocumentMouseUp.bind(this);\n\t\tthis.handleDocumentKeyUp = this.handleDocumentKeyUp.bind(this);\n\t\tthis.handleResizeWindow = this.handleResizeWindow.bind(this);\n\t\tthis.handleResize = this.handleResize.bind(this);\n\t\tthis.handleMove = this.handleMove.bind(this);\n\t\tthis.onTitleMouseDown = this.onTitleMouseDown.bind(this);\n\t\tthis.handleFullScreen = this.handleFullScreen.bind(this);\n\n\t\tthis.subscribeFromOptions(params.events);\n\n\t\tlet popupClassName = 'popup-window';\n\n\t\tif (params.titleBar)\n\t\t{\n\t\t\tpopupClassName += ' popup-window-with-titlebar';\n\t\t}\n\n\t\tif (params.className && Type.isStringFilled(params.className))\n\t\t{\n\t\t\tpopupClassName += ' ' + params.className;\n\t\t}\n\n\t\tif (params.darkMode)\n\t\t{\n\t\t\tpopupClassName += ' popup-window-dark';\n\t\t}\n\n\t\tif (params.titleBar)\n\t\t{\n\t\t\tthis.titleBar = Tag.render`\n\t\t\t\t<div class=\"popup-window-titlebar\" id=\"popup-window-titlebar-${popupId}\"></div>\n\t\t\t`;\n\t\t}\n\n\t\tif (params.closeIcon)\n\t\t{\n\t\t\tlet className = 'popup-window-close-icon'\n\t\t\t\t+ (params.titleBar ? ' popup-window-titlebar-close-icon' : '');\n\t\t\tif (Object.values(CloseIconSize).includes(params.closeIconSize) && params.closeIconSize !== CloseIconSize.SMALL)\n\t\t\t{\n\t\t\t\tclassName += ` --${params.closeIconSize}`;\n\t\t\t}\n\n\t\t\tthis.closeIcon = Tag.render`\n\t\t\t\t<span class=\"${className}\" onclick=\"${this.handleCloseIconClick.bind(this)}\"></span>\n\t\t\t`;\n\n\n\n\t\t\tif (Type.isPlainObject(params.closeIcon))\n\t\t\t{\n\t\t\t\tDom.style(this.closeIcon, params.closeIcon);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tthis.contentContainer = Tag.render\n\t\t\t`<div id=\"popup-window-content-${popupId}\" class=\"popup-window-content\"></div>`\n\t\t;\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tthis.popupContainer = Tag.render\n\t\t\t`<div\n\t\t\t\tclass=\"${popupClassName}\"\n\t\t\t\tid=\"${popupId}\"\n\t\t\t\tstyle=\"display: none; position: absolute; left: 0; top: 0;\"\n\t\t\t>${[this.titleBar, this.contentContainer, this.closeIcon]}</div>`\n\t\t;\n\n\t\tthis.targetContainer.appendChild(this.popupContainer);\n\n\t\tthis.zIndexComponent = ZIndexManager.register(this.popupContainer, params.zIndexOptions);\n\n\t\tthis.buttonsContainer = null;\n\n\t\tif (params.contentColor && Type.isStringFilled(params.contentColor))\n\t\t{\n\t\t\tif (\n\t\t\t\tparams.contentColor === 'white'\n\t\t\t\t|| params.contentColor === 'gray'\n\t\t\t)\n\t\t\t{\n\t\t\t\tpopupClassName += ' popup-window-content-' + params.contentColor;\n\t\t\t}\n\n\t\t\tthis.setContentColor(params.contentColor);\n\n\t\t}\n\n\t\tif (params.angle)\n\t\t{\n\t\t\tthis.setAngle(params.angle);\n\t\t}\n\n\t\tif (params.overlay)\n\t\t{\n\t\t\tthis.setOverlay(params.overlay);\n\t\t}\n\n\t\tthis.setOffset(params);\n\t\tthis.setBindElement(bindElement);\n\t\tthis.setTitleBar(params.titleBar);\n\t\tthis.setContent(params.content);\n\t\tthis.setButtons(params.buttons);\n\t\tthis.setWidth(params.width);\n\t\tthis.setHeight(params.height);\n\t\tthis.setMinWidth(params.minWidth);\n\t\tthis.setMinHeight(params.minHeight);\n\t\tthis.setMaxWidth(params.maxWidth);\n\t\tthis.setMaxHeight(params.maxHeight);\n\t\tthis.setResizeMode(params.resizable);\n\t\tthis.setPadding(params.padding);\n\t\tthis.setContentPadding(params.contentPadding);\n\t\tthis.setBorderRadius(params.borderRadius);\n\t\tthis.setContentBorderRadius(params.contentBorderRadius);\n\t\tthis.setBackground(params.background);\n\t\tthis.setContentBackground(params.contentBackground);\n\t\tthis.setAnimation(params.animation);\n\t\tthis.setCacheable(params.cacheable);\n\t\tthis.setToFrontOnShow(params.toFrontOnShow);\n\t\tthis.setFixed(params.fixed);\n\n\t\t// Compatibility\n\t\tif (params.contentNoPaddings)\n\t\t{\n\t\t\tthis.setContentPadding(0);\n\t\t}\n\t\tif (params.noAllPaddings)\n\t\t{\n\t\t\tthis.setPadding(0);\n\t\t\tthis.setContentPadding(0);\n\t\t}\n\n\t\tif (params.bindOnResize !== false)\n\t\t{\n\t\t\tEvent.bind(window, 'resize', this.handleResizeWindow);\n\t\t}\n\n\t\tthis.emit('onAfterInit', new BaseEvent({ compatData: [popupId, this] }));\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsubscribeFromOptions(events): void\n\t{\n\t\tsuper.subscribeFromOptions(events, aliases);\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.uniquePopupId;\n\t}\n\n\tisCompatibleMode(): boolean\n\t{\n\t\treturn this.compatibleMode;\n\t}\n\n\tsetContent(content: string | Element | Node)\n\t{\n\t\tif (!this.contentContainer || !content)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isElementNode(content))\n\t\t{\n\t\t\tDom.clean(this.contentContainer);\n\n\t\t\tconst hasParent = Type.isDomNode(content.parentNode);\n\t\t\tthis.contentContainer.appendChild(content);\n\t\t\tif (this.isCompatibleMode() || hasParent)\n\t\t\t{\n\t\t\t\tcontent.style.display = 'block';\n\t\t\t}\n\t\t}\n\t\telse if (Type.isString(content))\n\t\t{\n\t\t\tthis.contentContainer.innerHTML = content;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.contentContainer.innerHTML = '&nbsp;';\n\t\t}\n\t}\n\n\tsetButtons(buttons: [])\n\t{\n\t\tthis.buttons = buttons && Type.isArray(buttons) ? buttons : [];\n\n\t\tif (this.buttonsContainer)\n\t\t{\n\t\t\tDom.remove(this.buttonsContainer);\n\t\t}\n\n\t\tconst ButtonClass = Reflection.getClass('BX.UI.Button');\n\t\tif (this.buttons.length > 0 && this.contentContainer)\n\t\t{\n\t\t\tconst newButtons = [];\n\t\t\tfor (let i = 0; i < this.buttons.length; i++)\n\t\t\t{\n\t\t\t\tconst button = this.buttons[i];\n\t\t\t\tif (button instanceof Button)\n\t\t\t\t{\n\t\t\t\t\tbutton.popupWindow = this;\n\t\t\t\t\tnewButtons.push(button.render());\n\t\t\t\t}\n\t\t\t\telse if (ButtonClass && (button instanceof ButtonClass))\n\t\t\t\t{\n\t\t\t\t\tbutton.setContext(this);\n\t\t\t\t\tnewButtons.push(button.render());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.buttonsContainer = this.contentContainer.parentNode.appendChild(\n\t\t\t\tTag.render`<div class=\"popup-window-buttons\">${newButtons}</div>`\n\t\t\t);\n\t\t}\n\t}\n\n\tgetButtons(): []\n\t{\n\t\treturn this.buttons;\n\t}\n\n\tgetButton(id: string)\n\t{\n\t\tfor (let i = 0; i < this.buttons.length; i++)\n\t\t{\n\t\t\tconst button = this.buttons[i];\n\t\t\tif (button.getId() === id)\n\t\t\t{\n\t\t\t\treturn button;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetBindElement(bindElement: Element | { left: number, top: number } | null | MouseEvent)\n\t{\n\t\tif (bindElement === null)\n\t\t{\n\t\t\tthis.bindElement = null;\n\t\t}\n\t\telse if (typeof (bindElement) === 'object')\n\t\t{\n\t\t\tif (Type.isDomNode(bindElement) || (Type.isNumber(bindElement.top) && Type.isNumber(bindElement.left)))\n\t\t\t{\n\t\t\t\tthis.bindElement = bindElement;\n\t\t\t}\n\t\t\telse if (Type.isNumber(bindElement.clientX) && Type.isNumber(bindElement.clientY))\n\t\t\t{\n\t\t\t\tthis.bindElement = { left: bindElement.pageX, top: bindElement.pageY, bottom: bindElement.pageY };\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetBindElementPos(bindElement: HTMLElement | any): TargetPosition | DOMRect\n\t{\n\t\tif (Type.isDomNode(bindElement))\n\t\t{\n\t\t\tif (this.isTargetDocumentBody())\n\t\t\t{\n\t\t\t\treturn this.isFixed() ? bindElement.getBoundingClientRect() : Dom.getPosition(bindElement);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.getPositionRelativeToTarget(bindElement);\n\t\t\t}\n\t\t}\n\t\telse if (bindElement && typeof (bindElement) === 'object')\n\t\t{\n\t\t\tif (!Type.isNumber(bindElement.bottom))\n\t\t\t{\n\t\t\t\tbindElement.bottom = bindElement.top;\n\t\t\t}\n\n\t\t\treturn bindElement;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst windowSize = this.getWindowSize();\n\t\t\tconst windowScroll = this.getWindowScroll();\n\n\t\t\tconst popupWidth = this.getPopupContainer().offsetWidth;\n\t\t\tconst popupHeight = this.getPopupContainer().offsetHeight;\n\n\t\t\tthis.bindOptions.forceTop = true;\n\n\t\t\treturn {\n\t\t\t\tleft: windowSize.innerWidth / 2 - popupWidth / 2 + windowScroll.scrollLeft,\n\t\t\t\ttop: windowSize.innerHeight / 2 - popupHeight / 2 + (this.isFixed() ? 0 : windowScroll.scrollTop),\n\t\t\t\tbottom: windowSize.innerHeight / 2 - popupHeight / 2 + (this.isFixed() ? 0 : windowScroll.scrollTop),\n\n\t\t\t\t//for optimisation purposes\n\t\t\t\twindowSize: windowSize,\n\t\t\t\twindowScroll: windowScroll,\n\t\t\t\tpopupWidth: popupWidth,\n\t\t\t\tpopupHeight: popupHeight\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tgetPositionRelativeToTarget(element: HTMLElement): DOMRect\n\t{\n\t\tlet offsetLeft = element.offsetLeft;\n\t\tlet offsetTop = element.offsetTop;\n\t\tlet offsetElement = element.offsetParent;\n\n\t\twhile (offsetElement && offsetElement !== this.getTargetContainer())\n\t\t{\n\t\t\toffsetLeft += offsetElement.offsetLeft;\n\t\t\toffsetTop += offsetElement.offsetTop;\n\t\t\toffsetElement = offsetElement.offsetParent;\n\t\t}\n\n\t\tconst elementRect = element.getBoundingClientRect();\n\n\t\treturn new DOMRect(\n\t\t\toffsetLeft,\n\t\t\toffsetTop,\n\t\t\telementRect.width,\n\t\t\telementRect.height\n\t\t);\n\t}\n\n\t// private\n\tgetWindowSize(): { innerWidth: number, innerHeight: number }\n\t{\n\t\tif (this.isTargetDocumentBody())\n\t\t{\n\t\t\treturn {\n\t\t\t\tinnerWidth: window.innerWidth,\n\t\t\t\tinnerHeight: window.innerHeight\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn {\n\t\t\t\tinnerWidth: this.getTargetContainer().offsetWidth,\n\t\t\t\tinnerHeight: this.getTargetContainer().offsetHeight\n\t\t\t};\n\t\t}\n\t}\n\n\t// private\n\tgetWindowScroll()\n\t{\n\t\tif (this.isTargetDocumentBody())\n\t\t{\n\t\t\treturn {\n\t\t\t\tscrollLeft: window.pageXOffset,\n\t\t\t\tscrollTop: window.pageYOffset\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn {\n\t\t\t\tscrollLeft: this.getTargetContainer().scrollLeft,\n\t\t\t\tscrollTop: this.getTargetContainer().scrollTop\n\t\t\t};\n\t\t}\n\t}\n\n\tsetAngle(params: { offset: number, position?: 'top' | 'bottom' | 'left' | 'right' })\n\t{\n\t\tif (params === false)\n\t\t{\n\t\t\tif (this.angle !== null)\n\t\t\t{\n\t\t\t\tDom.remove(this.angle.element);\n\t\t\t}\n\n\t\t\tthis.angle = null;\n\t\t\tthis.angleArrowElement = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst className = 'popup-window-angly';\n\t\tif (this.angle === null)\n\t\t{\n\t\t\tconst position = this.bindOptions.position && this.bindOptions.position === 'top' ? 'bottom' : 'top';\n\t\t\tconst angleMinLeft = Popup.getOption(position === 'top' ? 'angleMinTop' : 'angleMinBottom');\n\t\t\tlet defaultOffset = Type.isNumber(params.offset) ? params.offset : 0;\n\n\t\t\tconst angleLeftOffset = Popup.getOption('angleLeftOffset', null);\n\t\t\tif (defaultOffset > 0 && Type.isNumber(angleLeftOffset))\n\t\t\t{\n\t\t\t\tdefaultOffset += angleLeftOffset - Popup.defaultOptions.angleLeftOffset;\n\t\t\t}\n\n\t\t\tthis.angleArrowElement = Tag.render`<div class=\"popup-window-angly--arrow\"></div>`;\n\t\t\tif (this.background)\n\t\t\t{\n\t\t\t\tthis.angleArrowElement.style.background = this.background;\n\t\t\t}\n\n\t\t\tthis.angle = {\n\t\t\t\telement: Tag.render`\n\t\t\t\t\t<div class=\"${className} ${className}-${position}\">\n\t\t\t\t\t\t${this.angleArrowElement}\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t\tposition: position,\n\t\t\t\toffset: 0,\n\t\t\t\tdefaultOffset: Math.max(defaultOffset, angleMinLeft)\n\t\t\t\t//Math.max(Type.isNumber(params.offset) ? params.offset : 0, angleMinLeft)\n\t\t\t};\n\n\t\t\tthis.getPopupContainer().appendChild(this.angle.element);\n\t\t}\n\n\t\tif (typeof (params) === 'object' && params.position && ['top', 'right', 'bottom', 'left', 'hide'].includes(params.position))\n\t\t{\n\t\t\tDom.removeClass(this.angle.element, className + '-' + this.angle.position);\n\t\t\tDom.addClass(this.angle.element, className + '-' + params.position);\n\n\t\t\tthis.angle.position = params.position;\n\t\t}\n\n\t\tif (typeof (params) === 'object' && Type.isNumber(params.offset))\n\t\t{\n\t\t\tconst offset = params.offset;\n\t\t\tlet minOffset, maxOffset;\n\t\t\tif (this.angle.position === 'top')\n\t\t\t{\n\t\t\t\tminOffset = Popup.getOption('angleMinTop');\n\t\t\t\tmaxOffset = this.getPopupContainer().offsetWidth - Popup.getOption('angleMaxTop');\n\t\t\t\tmaxOffset = maxOffset < minOffset ? Math.max(minOffset, offset) : maxOffset;\n\n\t\t\t\tthis.angle.offset = Math.min(Math.max(minOffset, offset), maxOffset);\n\t\t\t\tthis.angle.element.style.left = this.angle.offset + 'px';\n\t\t\t\tthis.angle.element.style.marginLeft = 0;\n\t\t\t\tthis.angle.element.style.removeProperty('top');\n\t\t\t}\n\t\t\telse if (this.angle.position === 'bottom')\n\t\t\t{\n\t\t\t\tminOffset = Popup.getOption('angleMinBottom');\n\t\t\t\tmaxOffset = this.getPopupContainer().offsetWidth - Popup.getOption('angleMaxBottom');\n\t\t\t\tmaxOffset = maxOffset < minOffset ? Math.max(minOffset, offset) : maxOffset;\n\n\t\t\t\tthis.angle.offset = Math.min(Math.max(minOffset, offset), maxOffset);\n\t\t\t\tthis.angle.element.style.marginLeft = this.angle.offset + 'px';\n\t\t\t\tthis.angle.element.style.left = 0;\n\t\t\t\tthis.angle.element.style.removeProperty('top');\n\t\t\t}\n\t\t\telse if (this.angle.position === 'right')\n\t\t\t{\n\t\t\t\tminOffset = Popup.getOption('angleMinRight');\n\t\t\t\tmaxOffset = this.getPopupContainer().offsetHeight - Popup.getOption('angleMaxRight');\n\t\t\t\tmaxOffset = maxOffset < minOffset ? Math.max(minOffset, offset) : maxOffset;\n\n\t\t\t\tthis.angle.offset = Math.min(Math.max(minOffset, offset), maxOffset);\n\t\t\t\tthis.angle.element.style.top = this.angle.offset + 'px';\n\t\t\t\tthis.angle.element.style.removeProperty('left');\n\t\t\t\tthis.angle.element.style.removeProperty('margin-left');\n\t\t\t}\n\t\t\telse if (this.angle.position === 'left')\n\t\t\t{\n\t\t\t\tminOffset = Popup.getOption('angleMinLeft');\n\t\t\t\tmaxOffset = this.getPopupContainer().offsetHeight - Popup.getOption('angleMaxLeft');\n\t\t\t\tmaxOffset = maxOffset < minOffset ? Math.max(minOffset, offset) : maxOffset;\n\n\t\t\t\tthis.angle.offset = Math.min(Math.max(minOffset, offset), maxOffset);\n\t\t\t\tthis.angle.element.style.top = this.angle.offset + 'px';\n\t\t\t\tthis.angle.element.style.removeProperty('left');\n\t\t\t\tthis.angle.element.style.removeProperty('margin-left');\n\t\t\t}\n\t\t}\n\t}\n\n\tgetWidth(): number\n\t{\n\t\treturn this.width;\n\t}\n\n\tsetWidth(width: number)\n\t{\n\t\tthis.setWidthProperty('width', width);\n\t}\n\n\tgetHeight(): number\n\t{\n\t\treturn this.height;\n\t}\n\n\tsetHeight(height: number)\n\t{\n\t\tthis.setHeightProperty('height', height);\n\t}\n\n\tgetMinWidth(): number\n\t{\n\t\treturn this.minWidth;\n\t}\n\n\tsetMinWidth(width: number)\n\t{\n\t\tthis.setWidthProperty('minWidth', width);\n\t}\n\n\tgetMinHeight(): number\n\t{\n\t\treturn this.minHeight;\n\t}\n\n\tsetMinHeight(height: number)\n\t{\n\t\tthis.setHeightProperty('minHeight', height);\n\t}\n\n\tgetMaxWidth(): number\n\t{\n\t\treturn this.maxWidth;\n\t}\n\n\tsetMaxWidth(width: number)\n\t{\n\t\tthis.setWidthProperty('maxWidth', width);\n\t}\n\n\tgetMaxHeight(): number\n\t{\n\t\treturn this.maxHeight;\n\t}\n\n\tsetMaxHeight(height: number)\n\t{\n\t\tthis.setHeightProperty('maxHeight', height);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetWidthProperty(property: string, width: number)\n\t{\n\t\tconst props = ['width', 'minWidth', 'maxWidth'];\n\t\tif (props.indexOf(property) === -1)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isNumber(width) && width >= 0)\n\t\t{\n\t\t\tthis[property] = width;\n\t\t\tthis.getResizableContainer().style[property] = width + 'px';\n\t\t\tthis.getContentContainer().style.overflowX = 'auto';\n\t\t\tthis.getPopupContainer().classList.add('popup-window-fixed-width');\n\n\t\t\tif (this.getTitleContainer() && Browser.isIE11())\n\t\t\t{\n\t\t\t\tthis.getTitleContainer().style[property] = width + 'px';\n\t\t\t}\n\t\t}\n\t\telse if (width === null || width === false)\n\t\t{\n\t\t\tthis[property] = null;\n\t\t\tthis.getResizableContainer().style.removeProperty(Text.toKebabCase(property));\n\n\t\t\tconst hasOtherProps = props.some(function(prop) {\n\t\t\t\treturn this.getResizableContainer().style.getPropertyValue(Text.toKebabCase(prop)) !== '';\n\t\t\t}, this);\n\n\t\t\tif (!hasOtherProps)\n\t\t\t{\n\t\t\t\tthis.getContentContainer().style.removeProperty('overflow-x');\n\t\t\t\tthis.getPopupContainer().classList.remove('popup-window-fixed-width');\n\t\t\t}\n\n\t\t\tif (this.getTitleContainer() && Browser.isIE11())\n\t\t\t{\n\t\t\t\tthis.getTitleContainer().style.removeProperty(Text.toKebabCase(property));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetHeightProperty(property: string, height: number)\n\t{\n\t\tconst props = ['height', 'minHeight', 'maxHeight'];\n\t\tif (props.indexOf(property) === -1)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isNumber(height) && height >= 0)\n\t\t{\n\t\t\tthis[property] = height;\n\t\t\tthis.getResizableContainer().style[property] = height + 'px';\n\t\t\tthis.getContentContainer().style.overflowY = 'auto';\n\t\t\tthis.getPopupContainer().classList.add('popup-window-fixed-height');\n\t\t}\n\t\telse if (height === null || height === false)\n\t\t{\n\t\t\tthis[property] = null;\n\t\t\tthis.getResizableContainer().style.removeProperty(Text.toKebabCase(property));\n\n\t\t\tconst hasOtherProps = props.some(function(prop) {\n\t\t\t\treturn this.getResizableContainer().style.getPropertyValue(Text.toKebabCase(prop)) !== '';\n\t\t\t}, this);\n\n\t\t\tif (!hasOtherProps)\n\t\t\t{\n\t\t\t\tthis.getContentContainer().style.removeProperty('overflow-y');\n\t\t\t\tthis.getPopupContainer().classList.remove('popup-window-fixed-height');\n\t\t\t}\n\t\t}\n\t}\n\n\tsetPadding(padding: number)\n\t{\n\t\tif (Type.isNumber(padding) && padding >= 0)\n\t\t{\n\t\t\tthis.padding = padding;\n\t\t\tthis.getPopupContainer().style.padding = padding + 'px';\n\t\t}\n\t\telse if (padding === null)\n\t\t{\n\t\t\tthis.padding = null;\n\t\t\tthis.getPopupContainer().style.removeProperty('padding');\n\t\t}\n\t}\n\n\tgetPadding(): number\n\t{\n\t\treturn this.padding;\n\t}\n\n\tsetContentPadding(padding: number)\n\t{\n\t\tif (Type.isNumber(padding) && padding >= 0)\n\t\t{\n\t\t\tthis.contentPadding = padding;\n\t\t\tthis.getContentContainer().style.padding = padding + 'px';\n\t\t}\n\t\telse if (padding === null)\n\t\t{\n\t\t\tthis.contentPadding = null;\n\t\t\tthis.getContentContainer().style.removeProperty('padding');\n\t\t}\n\t}\n\n\tgetContentPadding(): number\n\t{\n\t\treturn this.contentPadding;\n\t}\n\n\tsetBorderRadius(radius): void\n\t{\n\t\tif (Type.isStringFilled(radius))\n\t\t{\n\t\t\tthis.borderRadius = radius;\n\t\t\tthis.getPopupContainer().style.setProperty('--popup-window-border-radius', radius);\n\t\t}\n\t\telse if (radius === null)\n\t\t{\n\t\t\tthis.borderRadius = null;\n\t\t\tthis.getPopupContainer().style.removeProperty('--popup-window-border-radius');\n\t\t}\n\t}\n\n\tsetContentBorderRadius(radius): void\n\t{\n\t\tif (Type.isStringFilled(radius))\n\t\t{\n\t\t\tthis.contentBorderRadius = radius;\n\t\t\tthis.getContentContainer().style.setProperty('--popup-window-content-border-radius', radius);\n\t\t}\n\t\telse if (radius === null)\n\t\t{\n\t\t\tthis.contentBorderRadius = null;\n\t\t\tthis.getContentContainer().style.removeProperty('--popup-window-content-border-radius');\n\t\t}\n\t}\n\n\tsetContentColor(color: string | null)\n\t{\n\t\tif (Type.isString(color) && this.contentContainer)\n\t\t{\n\t\t\tthis.contentContainer.style.backgroundColor = color;\n\t\t}\n\t\telse if (color === null)\n\t\t{\n\t\t\tthis.contentContainer.style.style.removeProperty('background-color');\n\t\t}\n\t}\n\n\tsetBackground(background: string | null)\n\t{\n\t\tif (Type.isStringFilled(background))\n\t\t{\n\t\t\tthis.background = background;\n\t\t\tthis.getPopupContainer().style.background = background;\n\n\t\t\tif (this.angleArrowElement)\n\t\t\t{\n\t\t\t\tthis.angleArrowElement.style.background = background;\n\t\t\t}\n\t\t}\n\t\telse if (background === null)\n\t\t{\n\t\t\tthis.background = null;\n\t\t\tthis.getPopupContainer().style.removeProperty('background');\n\n\t\t\tif (this.angleArrowElement)\n\t\t\t{\n\t\t\t\tthis.angleArrowElement.style.removeProperty('background');\n\t\t\t}\n\t\t}\n\t}\n\n\tgetBackground(): string | null\n\t{\n\t\treturn this.background;\n\t}\n\n\tsetContentBackground(background: string | null)\n\t{\n\t\tif (Type.isStringFilled(background))\n\t\t{\n\t\t\tthis.contentBackground = background;\n\t\t\tthis.getContentContainer().style.background = background;\n\t\t}\n\t\telse if (background === null)\n\t\t{\n\t\t\tthis.contentBackground = null;\n\t\t\tthis.getContentContainer().style.removeProperty('background');\n\t\t}\n\t}\n\n\tgetContentBackground(): string | null\n\t{\n\t\treturn this.contentBackground;\n\t}\n\n\tisDestroyed(): boolean\n\t{\n\t\treturn this.destroyed;\n\t}\n\n\tsetCacheable(cacheable: boolean): void\n\t{\n\t\tthis.cacheable = cacheable !== false;\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\tsetToFrontOnShow(flag: boolean): void\n\t{\n\t\tthis.toFrontOnShow = flag !== false;\n\t}\n\n\tshouldFrontOnShow(): boolean\n\t{\n\t\treturn this.toFrontOnShow;\n\t}\n\n\tsetFixed(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.fixed = flag;\n\t\t\tif (flag)\n\t\t\t{\n\t\t\t\tDom.addClass(this.getPopupContainer(), '--fixed');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.removeClass(this.getPopupContainer(), '--fixed');\n\t\t\t}\n\t\t}\n\t}\n\n\tisFixed(): boolean\n\t{\n\t\treturn this.fixed;\n\t}\n\n\tsetResizeMode(mode: boolean): void\n\t{\n\t\tif (mode === true || Type.isPlainObject(mode))\n\t\t{\n\t\t\tif (!this.resizeIcon)\n\t\t\t{\n\t\t\t\tthis.resizeIcon = Tag.render`\n\t\t\t\t\t<div class=\"popup-window-resize\" onmousedown=\"${this.handleResizeMouseDown.bind(this)}\"></div>\n\t\t\t\t`;\n\n\t\t\t\tthis.getPopupContainer().appendChild(this.resizeIcon);\n\t\t\t}\n\n\t\t\t//Compatibility\n\t\t\tthis.setMinWidth(mode.minWidth);\n\t\t\tthis.setMinHeight(mode.minHeight);\n\t\t}\n\t\telse if (mode === false && this.resizeIcon)\n\t\t{\n\t\t\tDom.remove(this.resizeIcon);\n\t\t\tthis.resizeIcon = null;\n\t\t}\n\t}\n\n\tgetTargetContainer(): HTMLElement\n\t{\n\t\treturn this.targetContainer;\n\t}\n\n\tisTargetDocumentBody(): boolean\n\t{\n\t\treturn this.getTargetContainer() === document.body;\n\t}\n\n\tgetPopupContainer(): Element\n\t{\n\t\treturn this.popupContainer;\n\t}\n\n\tgetContentContainer(): Element\n\t{\n\t\treturn this.contentContainer;\n\t}\n\n\tgetResizableContainer(): Element\n\t{\n\t\treturn Browser.isIE11() ? this.getContentContainer() : this.getPopupContainer();\n\t}\n\n\tgetTitleContainer(): Element\n\t{\n\t\treturn this.titleBar;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonTitleMouseDown(event: MouseEvent): void\n\t{\n\t\tthis._startDrag(\n\t\t\tevent,\n\t\t\t{\n\t\t\t\tcursor: 'move',\n\t\t\t\tcallback: this.handleMove,\n\t\t\t\teventName: 'Drag'\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleResizeMouseDown(event): void\n\t{\n\t\tthis._startDrag(\n\t\t\tevent,\n\t\t\t{\n\t\t\t\tcursor: 'nwse-resize',\n\t\t\t\teventName: 'Resize',\n\t\t\t\tcallback: this.handleResize\n\t\t\t}\n\t\t);\n\n\t\tif (this.isTargetDocumentBody())\n\t\t{\n\t\t\tthis.resizeContentPos = Dom.getPosition(this.getResizableContainer());\n\t\t\tthis.resizeContentOffset =\n\t\t\t\tthis.resizeContentPos.left - Dom.getPosition(this.getPopupContainer()).left;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.resizeContentPos = this.getPositionRelativeToTarget(this.getResizableContainer());\n\t\t\tthis.resizeContentOffset =\n\t\t\t\tthis.resizeContentPos.left - this.getPositionRelativeToTarget(this.getPopupContainer()).left;\n\t\t}\n\n\t\tthis.resizeContentPos.offsetX = 0;\n\t\tthis.resizeContentPos.offsetY = 0;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleResize(offsetX, offsetY, pageX, pageY): void\n\t{\n\t\tthis.resizeContentPos.offsetX += offsetX;\n\t\tthis.resizeContentPos.offsetY += offsetY;\n\n\t\tlet width = this.resizeContentPos.width + this.resizeContentPos.offsetX;\n\t\tlet height = this.resizeContentPos.height + this.resizeContentPos.offsetY;\n\n\t\tconst scrollWidth =\n\t\t\tthis.isTargetDocumentBody() ? document.documentElement.scrollWidth : this.getTargetContainer().scrollWidth\n\t\t;\n\n\t\tif (this.resizeContentPos.left + width + this.resizeContentOffset >= scrollWidth)\n\t\t{\n\t\t\twidth = scrollWidth - this.resizeContentPos.left - this.resizeContentOffset;\n\t\t}\n\n\t\twidth = Math.max(width, this.getMinWidth());\n\t\theight = Math.max(height, this.getMinHeight());\n\n\t\tif (this.getMaxWidth() !== null)\n\t\t{\n\t\t\twidth = Math.min(width, this.getMaxWidth());\n\t\t}\n\n\t\tif (this.getMaxHeight() !== null)\n\t\t{\n\t\t\theight = Math.min(height, this.getMaxHeight());\n\t\t}\n\n\t\tthis.setWidth(width);\n\t\tthis.setHeight(height);\n\t}\n\n\tisTopAngle(): boolean\n\t{\n\t\treturn this.angle !== null && this.angle.position === 'top';\n\t}\n\n\tisBottomAngle(): boolean\n\t{\n\t\treturn this.angle !== null && this.angle.position === 'bottom';\n\t}\n\n\tisTopOrBottomAngle(): boolean\n\t{\n\t\treturn this.angle !== null && (this.angle.position === 'top' || this.angle.position === 'bottom');\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetAngleHeight(): number\n\t{\n\t\treturn (this.isTopOrBottomAngle() ? Popup.getOption('angleTopOffset') : 0);\n\t}\n\n\tsetOffset(params: { offsetTop: number, offsetLeft: number }): void\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isNumber(params.offsetLeft))\n\t\t{\n\t\t\tthis.offsetLeft = params.offsetLeft + Popup.getOption('offsetLeft');\n\t\t}\n\n\t\tif (Type.isNumber(params.offsetTop))\n\t\t{\n\t\t\tthis.offsetTop = params.offsetTop + Popup.getOption('offsetTop');\n\t\t}\n\t}\n\n\tsetTitleBar(params: string | { content: string }): void\n\t{\n\t\tif (!this.titleBar)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof (params) === 'object' && Type.isDomNode(params.content))\n\t\t{\n\t\t\tthis.titleBar.innerHTML = '';\n\t\t\tthis.titleBar.appendChild(params.content);\n\t\t}\n\t\telse if (typeof (params) === 'string')\n\t\t{\n\t\t\tthis.titleBar.innerHTML = '';\n\t\t\tthis.titleBar.appendChild(\n\t\t\t\tDom.create('span', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'popup-window-titlebar-text'\n\t\t\t\t\t},\n\t\t\t\t\ttext: params\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (this.params.draggable)\n\t\t{\n\t\t\tthis.titleBar.style.cursor = 'move';\n\t\t\tEvent.bind(this.titleBar, 'mousedown', this.onTitleMouseDown);\n\t\t}\n\t}\n\n\tsetClosingByEsc(enable: boolean): void\n\t{\n\t\tenable = Type.isBoolean(enable) ? enable : true;\n\t\tif (enable)\n\t\t{\n\t\t\tthis.closeByEsc = true;\n\t\t\tthis.bindClosingByEsc();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.closeByEsc = false;\n\t\t\tthis.unbindClosingByEsc();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tbindClosingByEsc(): void\n\t{\n\t\tif (this.closeByEsc && !this.isCloseByEscBinded)\n\t\t{\n\t\t\tEvent.bind(document, 'keyup', this.handleDocumentKeyUp);\n\t\t\tthis.isCloseByEscBinded = true;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tunbindClosingByEsc(): void\n\t{\n\t\tif (this.isCloseByEscBinded)\n\t\t{\n\t\t\tEvent.unbind(document, 'keyup', this.handleDocumentKeyUp);\n\t\t\tthis.isCloseByEscBinded = false;\n\t\t}\n\t}\n\n\tsetAutoHide(enable: boolean): void\n\t{\n\t\tenable = Type.isBoolean(enable) ? enable : true;\n\t\tif (enable)\n\t\t{\n\t\t\tthis.autoHide = true;\n\t\t\tthis.bindAutoHide();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.autoHide = false;\n\t\t\tthis.unbindAutoHide();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tbindAutoHide(): void\n\t{\n\t\tif (this.autoHide && !this.isAutoHideBinded && this.isShown())\n\t\t{\n\t\t\tthis.isAutoHideBinded = true;\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tEvent.bind(this.getPopupContainer(), 'click', this.handleContainerClick);\n\t\t\t}\n\n\t\t\tif (this.overlay && this.overlay.element)\n\t\t\t{\n\t\t\t\tEvent.bind(this.overlay.element, 'click', this.handleOverlayClick);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.isCompatibleMode())\n\t\t\t\t{\n\t\t\t\t\tEvent.bind(document, 'click', this.handleAutoHide);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.addEventListener('click', this.handleAutoHide, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tunbindAutoHide(): void\n\t{\n\t\tif (this.isAutoHideBinded)\n\t\t{\n\t\t\tthis.isAutoHideBinded = false;\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tEvent.unbind(this.getPopupContainer(), 'click', this.handleContainerClick);\n\t\t\t}\n\n\t\t\tif (this.overlay && this.overlay.element)\n\t\t\t{\n\t\t\t\tEvent.unbind(this.overlay.element, 'click', this.handleOverlayClick);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.isCompatibleMode())\n\t\t\t\t{\n\t\t\t\t\tEvent.unbind(document, 'click', this.handleAutoHide);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.removeEventListener('click', this.handleAutoHide, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event): void\n\t{\n\t\tif (this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.autoHideHandler !== null)\n\t\t{\n\t\t\tif (this.autoHideHandler(event))\n\t\t\t{\n\t\t\t\tthis._tryCloseByEvent(event);\n\t\t\t}\n\t\t}\n\t\telse if (event.target !== this.getPopupContainer() && !this.getPopupContainer().contains(event.target))\n\t\t{\n\t\t\tthis._tryCloseByEvent(event);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_tryCloseByEvent(event): void\n\t{\n\t\tif (this.isCompatibleMode())\n\t\t{\n\t\t\tthis.tryCloseByEvent(event);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.tryCloseByEvent(event);\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\ttryCloseByEvent(event): void\n\t{\n\t\tif (event.button === 0)\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleOverlayClick(event): void\n\t{\n\t\tthis.tryCloseByEvent(event);\n\t\tevent.stopPropagation();\n\t}\n\n\tsetOverlay(params: { backgroundColor?: string, opacity?: number }): void\n\t{\n\t\tif (this.overlay === null)\n\t\t{\n\t\t\tthis.overlay = {\n\t\t\t\telement: Tag.render`\n\t\t\t\t\t<div class=\"popup-window-overlay\" id=\"popup-window-overlay-${this.getId()}\"></div>\n\t\t\t\t`\n\t\t\t};\n\n\t\t\tthis.resizeOverlay();\n\n\t\t\tthis.targetContainer.appendChild(this.overlay.element);\n\t\t\tthis.getZIndexComponent().setOverlay(this.overlay.element);\n\t\t}\n\n\t\tif (params && Type.isNumber(params.opacity) && params.opacity >= 0 && params.opacity <= 100)\n\t\t{\n\t\t\tthis.overlay.element.style.opacity = parseFloat(params.opacity / 100).toPrecision(3);\n\t\t}\n\n\t\tif (params && params.backgroundColor)\n\t\t{\n\t\t\tthis.overlay.element.style.backgroundColor = params.backgroundColor;\n\t\t}\n\t}\n\n\tremoveOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tDom.remove(this.overlay.element);\n\t\t\tthis.getZIndexComponent().setOverlay(null);\n\t\t}\n\n\t\tif (this.overlayTimeout)\n\t\t{\n\t\t\tclearInterval(this.overlayTimeout);\n\t\t\tthis.overlayTimeout = null;\n\t\t}\n\n\t\tthis.overlay = null;\n\t}\n\n\thideOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tif (this.overlayTimeout)\n\t\t\t{\n\t\t\t\tclearInterval(this.overlayTimeout);\n\t\t\t\tthis.overlayTimeout = null;\n\t\t\t}\n\n\t\t\tthis.overlay.element.style.display = 'none';\n\t\t}\n\t}\n\n\tshowOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tthis.overlay.element.style.display = 'block';\n\n\t\t\tlet popupHeight = this.getPopupContainer().offsetHeight;\n\t\t\tthis.overlayTimeout = setInterval(() => {\n\t\t\t\tif (popupHeight !== this.getPopupContainer().offsetHeight)\n\t\t\t\t{\n\t\t\t\t\tthis.resizeOverlay();\n\t\t\t\t\tpopupHeight = this.getPopupContainer().offsetHeight;\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\n\tresizeOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tlet scrollWidth;\n\t\t\tlet scrollHeight;\n\t\t\tif (this.isTargetDocumentBody())\n\t\t\t{\n\t\t\t\tscrollWidth = document.documentElement.scrollWidth;\n\t\t\t\tscrollHeight = Math.max(\n\t\t\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tscrollWidth = this.getTargetContainer().scrollWidth;\n\t\t\t\tscrollHeight = this.getTargetContainer().scrollHeight;\n\t\t\t}\n\n\t\t\tthis.overlay.element.style.width = scrollWidth + 'px';\n\t\t\tthis.overlay.element.style.height = scrollHeight + 'px';\n\t\t}\n\t}\n\n\tgetZindex(): number\n\t{\n\t\treturn this.getZIndexComponent().getZIndex();\n\t}\n\n\tgetZIndexComponent(): ZIndexComponent\n\t{\n\t\treturn this.zIndexComponent;\n\t}\n\n\tsetDisableScroll(flag: boolean): void\n\t{\n\t\tconst disable = Type.isBoolean(flag) ? flag : true;\n\t\tif (disable)\n\t\t{\n\t\t\tthis.disableScroll = true;\n\t\t\tthis.#disableTargetScroll();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.disableScroll = false;\n\t\t\tthis.#enableTargetScroll();\n\t\t}\n\t}\n\n\t#disableTargetScroll(): void\n\t{\n\t\tconst target = this.getTargetContainer();\n\t\tlet popups: Set<Popup> = disabledScrolls.get(target);\n\t\tif (!popups)\n\t\t{\n\t\t\tpopups = new Set();\n\t\t\tdisabledScrolls.set(target, popups);\n\t\t}\n\n\t\tpopups.add(this);\n\n\t\tDom.addClass(target, 'popup-window-disable-scroll');\n\t}\n\n\t#enableTargetScroll(): void\n\t{\n\t\tconst target = this.getTargetContainer();\n\t\tconst popups: Set<Popup> = disabledScrolls.get(target) || null;\n\t\tif (popups)\n\t\t{\n\t\t\tpopups.delete(this);\n\t\t}\n\n\t\tif (popups === null || popups.size === 0)\n\t\t{\n\t\t\tDom.removeClass(target, 'popup-window-disable-scroll');\n\t\t}\n\t}\n\n\tshow(): void\n\t{\n\t\tif (this.isShown() || this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.emit('onBeforeShow');\n\n\t\tthis.showOverlay();\n\t\tthis.getPopupContainer().style.display = 'block';\n\n\t\tif (this.shouldFrontOnShow())\n\t\t{\n\t\t\tthis.bringToFront();\n\t\t}\n\n\t\tif (!this.firstShow)\n\t\t{\n\t\t\tthis.emit('onFirstShow', new BaseEvent({ compatData: [this] }));\n\t\t\tthis.firstShow = true;\n\t\t}\n\n\t\tthis.emit('onShow', new BaseEvent({ compatData: [this] }));\n\n\t\tif (this.disableScroll)\n\t\t{\n\t\t\tthis.#disableTargetScroll();\n\t\t}\n\n\t\tthis.adjustPosition();\n\n\t\tthis.animateOpening(() => {\n\n\t\t\tif (this.isDestroyed())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tDom.removeClass(this.getPopupContainer(), this.animationShowClassName);\n\t\t\tthis.emit('onAfterShow', new BaseEvent({ compatData: [this] }));\n\t\t});\n\n\t\tthis.bindClosingByEsc();\n\n\t\tif (this.isCompatibleMode())\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.bindAutoHide();\n\t\t\t}, 100);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.bindAutoHide();\n\t\t}\n\t}\n\n\tclose(): void\n\t{\n\t\tif (this.isDestroyed() || !this.isShown())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.emit('onClose', new BaseEvent({ compatData: [this] }));\n\n\t\tif (this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.disableScroll)\n\t\t{\n\t\t\tthis.#enableTargetScroll();\n\t\t}\n\n\t\tthis.animateClosing(() => {\n\n\t\t\tif (this.isDestroyed())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.hideOverlay();\n\n\t\t\tthis.getPopupContainer().style.display = 'none';\n\n\t\t\tDom.removeClass(this.getPopupContainer(), this.animationCloseClassName);\n\n\t\t\tthis.unbindClosingByEsc();\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.unbindAutoHide();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.unbindAutoHide();\n\t\t\t}\n\n\t\t\tthis.emit('onAfterClose', new BaseEvent({ compatData: [this] }));\n\n\t\t\tif (!this.isCacheable())\n\t\t\t{\n\t\t\t\tthis.destroy();\n\t\t\t}\n\n\t\t});\n\t}\n\n\tbringToFront(): void\n\t{\n\t\tif (this.isShown())\n\t\t{\n\t\t\tZIndexManager.bringToFront(this.getPopupContainer());\n\t\t}\n\t}\n\n\ttoggle(): void\n\t{\n\t\tthis.isShown() ? this.close() : this.show();\n\t}\n\n\t/**\n\t *\n\t * @private\n\t */\n\tanimateOpening(callback: Function): void\n\t{\n\t\tDom.removeClass(this.getPopupContainer(), this.animationCloseClassName);\n\n\t\tif (this.animationShowClassName !== null)\n\t\t{\n\t\t\tDom.addClass(this.getPopupContainer(), this.animationShowClassName);\n\n\t\t\tif (this.animationCloseEventType !== null)\n\t\t\t{\n\t\t\t\tconst eventName = this.animationCloseEventType + 'end';\n\t\t\t\tthis.getPopupContainer().addEventListener(eventName, function handleTransitionEnd() {\n\t\t\t\t\tthis.removeEventListener(eventName, handleTransitionEnd);\n\t\t\t\t\tcallback();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tanimateClosing(callback: Function): void\n\t{\n\t\tDom.removeClass(this.getPopupContainer(), this.animationShowClassName);\n\n\t\tif (this.animationCloseClassName !== null)\n\t\t{\n\t\t\tDom.addClass(this.getPopupContainer(), this.animationCloseClassName);\n\n\t\t\tif (this.animationCloseEventType !== null)\n\t\t\t{\n\t\t\t\tconst eventName = this.animationCloseEventType + 'end';\n\t\t\t\tthis.getPopupContainer().addEventListener(eventName, function handleTransitionEnd() {\n\t\t\t\t\tthis.removeEventListener(eventName, handleTransitionEnd);\n\t\t\t\t\tcallback();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcallback();\n\t\t}\n\t}\n\n\tsetAnimation(options: PopupAnimationOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tthis.animationShowClassName = Type.isStringFilled(options.showClassName) ? options.showClassName : null;\n\t\t\tthis.animationCloseClassName = Type.isStringFilled(options.closeClassName) ? options.closeClassName : null;\n\t\t\tthis.animationCloseEventType =\n\t\t\t\toptions.closeAnimationType === 'animation' || options.closeAnimationType === 'transition'\n\t\t\t\t\t? options.closeAnimationType\n\t\t\t\t\t: null\n\t\t\t;\n\t\t}\n\t\telse if (Type.isStringFilled(options))\n\t\t{\n\t\t\tconst animationName = options;\n\t\t\tif (animationName === 'fading')\n\t\t\t{\n\t\t\t\tthis.animationShowClassName = 'popup-window-show-animation-opacity';\n\t\t\t\tthis.animationCloseClassName = 'popup-window-close-animation-opacity';\n\t\t\t\tthis.animationCloseEventType = 'animation';\n\t\t\t}\n\t\t\telse if (animationName === 'fading-slide')\n\t\t\t{\n\t\t\t\tthis.animationShowClassName = 'popup-window-show-animation-opacity-transform';\n\t\t\t\tthis.animationCloseClassName = 'popup-window-close-animation-opacity';\n\t\t\t\tthis.animationCloseEventType = 'animation';\n\t\t\t}\n\t\t\telse if (animationName === 'scale')\n\t\t\t{\n\t\t\t\tthis.animationShowClassName = 'popup-window-show-animation-scale';\n\t\t\t\tthis.animationCloseClassName = 'popup-window-close-animation-opacity';\n\t\t\t\tthis.animationCloseEventType = 'animation';\n\t\t\t}\n\t\t}\n\t\telse if (options === false || options === null)\n\t\t{\n\t\t\tthis.animationShowClassName = null;\n\t\t\tthis.animationCloseClassName = null;\n\t\t\tthis.animationCloseEventType = null;\n\t\t}\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn !this.isDestroyed() && this.getPopupContainer().style.display === 'block';\n\t}\n\n\tdestroy(): void\n\t{\n\t\tif (this.destroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.disableScroll)\n\t\t{\n\t\t\tthis.#enableTargetScroll();\n\t\t}\n\n\t\tthis.destroyed = true;\n\n\t\tthis.emit('onDestroy', new BaseEvent({ compatData: [this] }));\n\n\t\tthis.unbindClosingByEsc();\n\n\t\tif (this.isCompatibleMode())\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.unbindAutoHide();\n\t\t\t}, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.unbindAutoHide();\n\t\t}\n\n\t\tEvent.unbindAll(this);\n\t\tEvent.unbind(document, 'mousemove', this.handleDocumentMouseMove);\n\t\tEvent.unbind(document, 'mouseup', this.handleDocumentMouseUp);\n\t\tEvent.unbind(window, 'resize', this.handleResizeWindow);\n\n\t\tthis.removeOverlay();\n\n\t\tZIndexManager.unregister(this.popupContainer);\n\t\tthis.zIndexComponent = null;\n\n\t\tDom.remove(this.popupContainer);\n\n\t\tthis.popupContainer = null;\n\t\tthis.contentContainer = null;\n\t\tthis.closeIcon = null;\n\t\tthis.titleBar = null;\n\t\tthis.buttonsContainer = null;\n\t\tthis.angle = null;\n\t\tthis.angleArrowElement = null;\n\t\tthis.resizeIcon = null;\n\t}\n\n\tadjustPosition(bindOptions: {\n\t\tforceBindPosition?: boolean,\n\t\tforceLeft?: boolean,\n\t\tforceTop?: boolean,\n\t\tposition?: 'top' | 'bootom'\n\t}): void\n\t{\n\t\tif (bindOptions && typeof (bindOptions) === 'object')\n\t\t{\n\t\t\tthis.bindOptions = bindOptions;\n\t\t}\n\n\t\tconst bindElementPos = this.getBindElementPos(this.bindElement);\n\n\t\tif (\n\t\t\t!this.bindOptions.forceBindPosition &&\n\t\t\tthis.bindElementPos !== null &&\n\t\t\tbindElementPos.top === this.bindElementPos.top &&\n\t\t\tbindElementPos.left === this.bindElementPos.left\n\t\t)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.bindElementPos = bindElementPos;\n\n\t\tconst windowSize = bindElementPos.windowSize ? bindElementPos.windowSize : this.getWindowSize();\n\t\tconst windowScroll = bindElementPos.windowScroll ? bindElementPos.windowScroll : this.getWindowScroll();\n\n\t\tconst popupWidth = bindElementPos.popupWidth ? bindElementPos.popupWidth : this.popupContainer.offsetWidth;\n\t\tconst popupHeight = bindElementPos.popupHeight ? bindElementPos.popupHeight : this.popupContainer.offsetHeight;\n\n\t\tconst angleTopOffset = Popup.getOption('angleTopOffset');\n\n\t\tlet left =\n\t\t\tthis.bindElementPos.left + this.offsetLeft -\n\t\t\t(this.isTopOrBottomAngle() ? Popup.getOption('angleLeftOffset') : 0)\n\t\t;\n\n\t\tif (\n\t\t\t!this.bindOptions.forceLeft &&\n\t\t\t(left + popupWidth + this.bordersWidth) >= (windowSize.innerWidth + windowScroll.scrollLeft) &&\n\t\t\t(windowSize.innerWidth + windowScroll.scrollLeft - popupWidth - this.bordersWidth) > 0)\n\t\t{\n\t\t\tconst bindLeft = left;\n\t\t\tleft = windowSize.innerWidth + windowScroll.scrollLeft - popupWidth - this.bordersWidth;\n\t\t\tif (this.isTopOrBottomAngle())\n\t\t\t{\n\t\t\t\tthis.setAngle({ offset: bindLeft - left + this.angle.defaultOffset });\n\t\t\t}\n\t\t}\n\t\telse if (this.isTopOrBottomAngle())\n\t\t{\n\t\t\tthis.setAngle({ offset: this.angle.defaultOffset + (left < 0 ? left : 0) });\n\t\t}\n\n\t\tif (left < 0)\n\t\t{\n\t\t\tleft = 0;\n\t\t}\n\n\t\tlet top = 0;\n\n\t\tif (this.bindOptions.position && this.bindOptions.position === 'top')\n\t\t{\n\n\t\t\ttop = this.bindElementPos.top - popupHeight - this.offsetTop - (this.isBottomAngle() ? angleTopOffset : 0);\n\t\t\tif (top < 0 || (!this.bindOptions.forceTop && top < windowScroll.scrollTop))\n\t\t\t{\n\t\t\t\ttop = this.bindElementPos.bottom + this.offsetTop;\n\t\t\t\tif (this.angle !== null)\n\t\t\t\t{\n\t\t\t\t\ttop += angleTopOffset;\n\t\t\t\t\tthis.setAngle({ position: 'top' });\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.isTopAngle())\n\t\t\t{\n\t\t\t\ttop = top - angleTopOffset + Popup.getOption('positionTopXOffset');\n\t\t\t\tthis.setAngle({ position: 'bottom' });\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttop += Popup.getOption('positionTopXOffset');\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttop = this.bindElementPos.bottom + this.offsetTop + this.getAngleHeight();\n\n\t\t\tif (\n\t\t\t\t!this.bindOptions.forceTop &&\n\t\t\t\t(top + popupHeight) > (windowSize.innerHeight + windowScroll.scrollTop) &&\n\t\t\t\t(this.bindElementPos.top - popupHeight - this.getAngleHeight()) >= 0) //Can we place the PopupWindow above the bindElement?\n\t\t\t{\n\t\t\t\t//The PopupWindow doesn't place below the bindElement. We should place it above.\n\t\t\t\ttop = this.bindElementPos.top - popupHeight;\n\n\t\t\t\tif (this.isTopOrBottomAngle())\n\t\t\t\t{\n\t\t\t\t\ttop -= angleTopOffset;\n\t\t\t\t\tthis.setAngle({ position: 'bottom' });\n\t\t\t\t}\n\n\t\t\t\ttop += Popup.getOption('positionTopXOffset');\n\n\t\t\t}\n\t\t\telse if (this.isBottomAngle())\n\t\t\t{\n\t\t\t\ttop += angleTopOffset;\n\t\t\t\tthis.setAngle({ position: 'top' });\n\t\t\t}\n\t\t}\n\n\t\tif (top < 0)\n\t\t{\n\t\t\ttop = 0;\n\t\t}\n\n\t\tconst event = new PositionEvent();\n\t\tevent.left = left;\n\t\tevent.top = top;\n\n\t\tthis.emit('onBeforeAdjustPosition', event);\n\n\t\tDom.adjust(this.popupContainer, {\n\t\t\tstyle: {\n\t\t\t\ttop: event.top + 'px',\n\t\t\t\tleft: event.left + 'px'\n\t\t\t}\n\t\t});\n\t}\n\n\tenterFullScreen(): void\n\t{\n\t\tif (Popup.fullscreenStatus)\n\t\t{\n\t\t\tif (document.cancelFullScreen)\n\t\t\t{\n\t\t\t\tdocument.cancelFullScreen();\n\t\t\t}\n\t\t\telse if (document.mozCancelFullScreen)\n\t\t\t{\n\t\t\t\tdocument.mozCancelFullScreen();\n\t\t\t}\n\t\t\telse if (document.webkitCancelFullScreen)\n\t\t\t{\n\t\t\t\tdocument.webkitCancelFullScreen();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.contentContainer.requestFullScreen)\n\t\t\t{\n\t\t\t\tthis.contentContainer.requestFullScreen();\n\t\t\t\tEvent.bind(window, 'fullscreenchange', this.handleFullScreen);\n\t\t\t}\n\t\t\telse if (this.contentContainer.mozRequestFullScreen)\n\t\t\t{\n\t\t\t\tthis.contentContainer.mozRequestFullScreen();\n\t\t\t\tEvent.bind(window, 'mozfullscreenchange', this.handleFullScreen);\n\t\t\t}\n\t\t\telse if (this.contentContainer.webkitRequestFullScreen)\n\t\t\t{\n\t\t\t\tthis.contentContainer.webkitRequestFullScreen();\n\t\t\t\tEvent.bind(window, 'webkitfullscreenchange', this.handleFullScreen);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconsole.log('fullscreen mode is not supported');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleFullScreen(event): void\n\t{\n\t\tif (Popup.fullscreenStatus)\n\t\t{\n\t\t\tEvent.unbind(window, 'fullscreenchange', this.handleFullScreen);\n\t\t\tEvent.unbind(window, 'webkitfullscreenchange', this.handleFullScreen);\n\t\t\tEvent.unbind(window, 'mozfullscreenchange', this.handleFullScreen);\n\n\t\t\tPopup.fullscreenStatus = false;\n\n\t\t\tif (!this.isDestroyed())\n\t\t\t{\n\t\t\t\tDom.removeClass(this.contentContainer, 'popup-window-fullscreen');\n\t\t\t\tthis.emit('onFullscreenLeave');\n\t\t\t\tthis.adjustPosition();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tPopup.fullscreenStatus = true;\n\n\t\t\tif (!this.isDestroyed())\n\t\t\t{\n\t\t\t\tDom.addClass(this.contentContainer, 'popup-window-fullscreen');\n\t\t\t\tthis.emit('onFullscreenEnter');\n\t\t\t\tthis.adjustPosition();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleCloseIconClick(event): void\n\t{\n\t\tthis.tryCloseByEvent(event);\n\t\tevent.stopPropagation();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleContainerClick(event): void\n\t{\n\t\tevent.stopPropagation();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleDocumentKeyUp(event): void\n\t{\n\t\tif (event.keyCode === 27)\n\t\t{\n\t\t\tcheckEscPressed(this.getZindex(), () => {\n\t\t\t\tthis.close();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleResizeWindow(): void\n\t{\n\t\tif (this.isShown())\n\t\t{\n\t\t\tthis.adjustPosition();\n\t\t\tif (this.overlay !== null)\n\t\t\t{\n\t\t\t\tthis.resizeOverlay();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleMove(offsetX: number, offsetY: number, pageX: number, pageY: number): void\n\t{\n\t\tlet left = parseInt(this.popupContainer.style.left) + offsetX;\n\t\tlet top = parseInt(this.popupContainer.style.top) + offsetY;\n\n\t\tif (typeof (this.params.draggable) === 'object' && this.params.draggable.restrict)\n\t\t{\n\t\t\t//Left side\n\t\t\tif (left < 0)\n\t\t\t{\n\t\t\t\tleft = 0;\n\t\t\t}\n\n\t\t\tlet scrollWidth;\n\t\t\tlet scrollHeight;\n\t\t\tif (this.isTargetDocumentBody())\n\t\t\t{\n\t\t\t\tscrollWidth = document.documentElement.scrollWidth;\n\t\t\t\tscrollHeight = document.documentElement.scrollHeight;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tscrollWidth = this.getTargetContainer().scrollWidth;\n\t\t\t\tscrollHeight = this.getTargetContainer().scrollHeight;\n\t\t\t}\n\n\t\t\t//Right side\n\t\t\tconst floatWidth = this.popupContainer.offsetWidth;\n\t\t\tconst floatHeight = this.popupContainer.offsetHeight;\n\n\t\t\tif (left > (scrollWidth - floatWidth))\n\t\t\t{\n\t\t\t\tleft = scrollWidth - floatWidth;\n\t\t\t}\n\n\t\t\tif (top > (scrollHeight - floatHeight))\n\t\t\t{\n\t\t\t\ttop = scrollHeight - floatHeight;\n\t\t\t}\n\n\t\t\t//Top side\n\t\t\tif (top < 0)\n\t\t\t{\n\t\t\t\ttop = 0;\n\t\t\t}\n\t\t}\n\n\t\tthis.popupContainer.style.left = left + 'px';\n\t\tthis.popupContainer.style.top = top + 'px';\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_startDrag(event: MouseEvent, options): void\n\t{\n\t\toptions = options || {};\n\t\tif (Type.isStringFilled(options.cursor))\n\t\t{\n\t\t\tthis.dragOptions.cursor = options.cursor;\n\t\t}\n\n\t\tif (Type.isStringFilled(options.eventName))\n\t\t{\n\t\t\tthis.dragOptions.eventName = options.eventName;\n\t\t}\n\n\t\tif (Type.isFunction(options.callback))\n\t\t{\n\t\t\tthis.dragOptions.callback = options.callback;\n\t\t}\n\n\t\tthis.dragPageX = event.pageX;\n\t\tthis.dragPageY = event.pageY;\n\t\tthis.dragged = false;\n\n\t\tEvent.bind(document, 'mousemove', this.handleDocumentMouseMove);\n\t\tEvent.bind(document, 'mouseup', this.handleDocumentMouseUp);\n\n\t\tif (document.body.setCapture)\n\t\t{\n\t\t\tdocument.body.setCapture();\n\t\t}\n\n\t\tdocument.body.ondrag = () => false;\n\t\tdocument.body.onselectstart = () => false;\n\t\tdocument.body.style.cursor = this.dragOptions.cursor;\n\t\tdocument.body.style.MozUserSelect = 'none';\n\t\tthis.popupContainer.style.MozUserSelect = 'none';\n\n\t\tif (this.shouldFrontOnShow())\n\t\t{\n\t\t\tthis.bringToFront();\n\t\t}\n\n\t\tevent.preventDefault();\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleDocumentMouseMove(event): void\n\t{\n\t\tif (this.dragPageX === event.pageX && this.dragPageY === event.pageY)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dragOptions.callback(\n\t\t\tevent.pageX - this.dragPageX,\n\t\t\tevent.pageY - this.dragPageY,\n\t\t\tevent.pageX,\n\t\t\tevent.pageY\n\t\t);\n\n\t\tthis.dragPageX = event.pageX;\n\t\tthis.dragPageY = event.pageY;\n\n\t\tif (!this.dragged)\n\t\t{\n\t\t\tthis.emit(`on${this.dragOptions.eventName}Start`, new BaseEvent({ compatData: [this] }));\n\t\t\tthis.dragged = true;\n\t\t}\n\n\t\tthis.emit(`on${this.dragOptions.eventName}`, new BaseEvent({ compatData: [this] }));\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleDocumentMouseUp(event: MouseEvent): void\n\t{\n\t\tif (document.body.releaseCapture)\n\t\t{\n\t\t\tdocument.body.releaseCapture();\n\t\t}\n\n\t\tEvent.unbind(document, 'mousemove', this.handleDocumentMouseMove);\n\t\tEvent.unbind(document, 'mouseup', this.handleDocumentMouseUp);\n\n\t\tdocument.body.ondrag = null;\n\t\tdocument.body.onselectstart = null;\n\t\tdocument.body.style.cursor = '';\n\t\tdocument.body.style.MozUserSelect = '';\n\t\tthis.popupContainer.style.MozUserSelect = '';\n\n\t\tthis.emit(`on${this.dragOptions.eventName}End`, new BaseEvent({ compatData: [this] }));\n\t\tthis.dragged = false;\n\n\t\tevent.preventDefault();\n\t}\n}\n\nlet escCallbackIndex = -1;\nlet escCallback = null;\n\nfunction checkEscPressed(zIndex, callback)\n{\n\tif (zIndex === false)\n\t{\n\t\tif (escCallback && escCallback.length > 0)\n\t\t{\n\t\t\tfor (let i = 0; i < escCallback.length; i++)\n\t\t\t{\n\t\t\t\tescCallback[i]();\n\t\t\t}\n\n\t\t\tescCallback = null;\n\t\t\tescCallbackIndex = -1;\n\t\t}\n\t}\n\telse\n\t{\n\t\tif (escCallback === null)\n\t\t{\n\t\t\tescCallback = [];\n\t\t\tescCallbackIndex = -1;\n\t\t\tsetTimeout(() => {\n\t\t\t\tcheckEscPressed(false);\n\t\t\t}, 10);\n\t\t}\n\n\t\tif (zIndex > escCallbackIndex)\n\t\t{\n\t\t\tescCallbackIndex = zIndex;\n\t\t\tescCallback = [callback];\n\t\t}\n\t\telse if (zIndex === escCallbackIndex)\n\t\t{\n\t\t\tescCallback.push(callback);\n\t\t}\n\t}\n}\n","import Popup from './popup';\nimport { type PopupOptions } from './popup-types';\nimport { Type } from 'main.core';\nimport { EventEmitter, type BaseEvent } from 'main.core.events';\n\nexport default class PopupManager\n{\n\tstatic _popups: Popup[] = [];\n\tstatic _currentPopup: Popup = null;\n\n\tconstructor()\n\t{\n\t\tthrow new Error('You cannot make an instance of PopupManager.');\n\t}\n\n\tstatic create(options: PopupOptions): Popup\n\t{\n\t\tlet [popupId, bindElement, params] = arguments; //compatible arguments\n\n\t\tlet id = popupId;\n\t\tlet compatMode = true;\n\t\tif (Type.isPlainObject(popupId) && !bindElement && !params)\n\t\t{\n\t\t\tcompatMode = false;\n\t\t\tid = popupId.id;\n\t\t\tif (!Type.isStringFilled(id))\n\t\t\t{\n\t\t\t\tthrow new Error('BX.Main.Popup.Manager: \"id\" parameter is required.');\n\t\t\t}\n\t\t}\n\n\t\tlet popupWindow = this.getPopupById(id);\n\t\tif (popupWindow === null)\n\t\t{\n\t\t\tpopupWindow = compatMode ? new Popup(popupId, bindElement, params) : new Popup(options);\n\t\t\tpopupWindow.subscribe('onShow', this.handlePopupShow);\n\t\t\tpopupWindow.subscribe('onClose', this.handlePopupClose);\n\t\t}\n\n\t\treturn popupWindow;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic handleOnAfterInit(event: BaseEvent)\n\t{\n\t\tevent.getTarget().subscribeOnce('onDestroy', this.handlePopupDestroy);\n\n\t\tthis._popups.forEach(popup => {\n\t\t\tif (popup.getId() === event.getTarget().getId())\n\t\t\t{\n\t\t\t\tconsole.error(`Duplicate id (${popup.getId()}) for the BX.Main.Popup instance.`);\n\t\t\t}\n\t\t});\n\n\t\tthis._popups.push(event.getTarget());\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic handlePopupDestroy(event: BaseEvent)\n\t{\n\t\tthis._popups = this._popups.filter(popup => {\n\t\t\treturn popup !== event.getTarget();\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic handlePopupShow(event: BaseEvent)\n\t{\n\t\tif (this._currentPopup !== null)\n\t\t{\n\t\t\tthis._currentPopup.close();\n\t\t}\n\n\t\tthis._currentPopup = event.getTarget();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tstatic handlePopupClose()\n\t{\n\t\tthis._currentPopup = null;\n\t}\n\n\tstatic getCurrentPopup(): Popup | null\n\t{\n\t\treturn this._currentPopup;\n\t}\n\n\tstatic isPopupExists(id): boolean\n\t{\n\t\treturn this.getPopupById(id) !== null;\n\t}\n\n\tstatic isAnyPopupShown(): boolean\n\t{\n\t\tfor (let i = 0, length = this._popups.length; i < length; i++)\n\t\t{\n\t\t\tif (this._popups[i].isShown())\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tstatic getPopupById(id): Popup | null\n\t{\n\t\tfor (let i = 0; i < this._popups.length; i++)\n\t\t{\n\t\t\tif (this._popups[i].getId() === id)\n\t\t\t{\n\t\t\t\treturn this._popups[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic getMaxZIndex(): number\n\t{\n\t\tlet zIndex = 0;\n\n\t\tthis.getPopups().forEach((popup: Popup) => {\n\t\t\tzIndex = Math.max(zIndex, popup.getZindex());\n\t\t});\n\n\t\treturn zIndex;\n\t}\n\n\tstatic getPopups(): Popup[]\n\t{\n\t\treturn this._popups;\n\t}\n}\n\nPopupManager.handlePopupDestroy = PopupManager.handlePopupDestroy.bind(PopupManager);\nPopupManager.handlePopupShow = PopupManager.handlePopupShow.bind(PopupManager);\nPopupManager.handlePopupClose = PopupManager.handlePopupClose.bind(PopupManager);\nPopupManager.handleOnAfterInit = PopupManager.handleOnAfterInit.bind(PopupManager);\n\nEventEmitter.subscribe('BX.Main.Popup:onAfterInit', PopupManager.handleOnAfterInit);","import Menu from './menu';\nimport { Type, Text, Dom, Event, Tag } from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\nimport { MenuItemOptions } from './menu-types';\n\nconst aliases = {\n\tonSubMenuShow: { namespace: 'BX.Main.Menu.Item', eventName: 'SubMenu:onShow' },\n\tonSubMenuClose: { namespace: 'BX.Main.Menu.Item', eventName: 'SubMenu:onClose' }\n};\n\nconst reEscape = /[<>'\"]/g;\nconst escapeEntities = {\n\t'<': '&lt;',\n\t'>': '&gt;',\n\t\"'\": '&#39;',\n\t'\"': '&quot;',\n};\n\nfunction encodeSafe(value: string): string\n{\n\tif (Type.isString(value))\n\t{\n\t\treturn value.replace(reEscape, item => escapeEntities[item]);\n\t}\n\n\treturn value;\n}\n\nEventEmitter.registerAliases(aliases);\n\nexport default class MenuItem extends EventEmitter\n{\n\tconstructor(options: MenuItemOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Main.Menu.Item');\n\n\t\toptions = options || {};\n\t\tthis.options = options;\n\n\t\tthis.id = options.id || Text.getRandom();\n\n\t\tthis.text = '';\n\t\tthis.allowHtml = false;\n\t\tif (Type.isStringFilled(options.html) || Type.isElementNode(options.html))\n\t\t{\n\t\t\tthis.text = options.html;\n\t\t\tthis.allowHtml = true;\n\t\t}\n\t\telse if (Type.isStringFilled(options.text))\n\t\t{\n\t\t\tthis.text = options.text;\n\t\t\tif (this.text.match(/<[^>]+>/))\n\t\t\t{\n\t\t\t\tconsole.warn('BX.Main.MenuItem: use \"html\" option for the html item content.', this.getText());\n\t\t\t}\n\t\t}\n\n\t\tthis.title = Type.isStringFilled(options.title) ? options.title : '';\n\t\tthis.delimiter = options.delimiter === true;\n\t\tthis.href = Type.isStringFilled(options.href) ? options.href : null;\n\t\tthis.target = Type.isStringFilled(options.target) ? options.target : null;\n\t\tthis.dataset = Type.isPlainObject(options.dataset) ? options.dataset : null;\n\t\tthis.className = Type.isStringFilled(options.className) ? options.className : null;\n\t\tthis.menuShowDelay = Type.isNumber(options.menuShowDelay) ? options.menuShowDelay : 300;\n\t\tthis.subMenuOffsetX = Type.isNumber(options.subMenuOffsetX) ? options.subMenuOffsetX : 4;\n\t\tthis._items = Type.isArray(options.items) ? options.items : [];\n\t\tthis.disabled = options.disabled === true;\n\t\tthis.cacheable = options.cacheable === true;\n\n\t\t/**\n\t\t *\n\t\t * @type {function|string}\n\t\t */\n\t\tthis.onclick =\n\t\t\tType.isStringFilled(options.onclick) || Type.isFunction(options.onclick)\n\t\t\t\t? options.onclick\n\t\t\t\t: null\n\t\t;\n\n\t\tthis.subscribeFromOptions(options.events, aliases);\n\n\t\t/**\n\t\t *\n\t\t * @type {Menu}\n\t\t */\n\t\tthis.menuWindow = null;\n\n\t\t/**\n\t\t *\n\t\t * @type {Menu}\n\t\t */\n\t\tthis.subMenuWindow = null;\n\n\t\t/**\n\t\t *\n\t\t * @type {{item: HTMLElement, text: HTMLElement}}\n\t\t */\n\t\tthis.layout = {\n\t\t\titem: null,\n\t\t\ttext: null\n\t\t};\n\n\t\tthis.getLayout(); //compatibility\n\n\t\t//compatibility\n\t\t//now use this.options\n\t\tthis.events = {};\n\t\tthis.items = [];\n\t\tfor (let property in options)\n\t\t{\n\t\t\tif (options.hasOwnProperty(property) && typeof (this[property]) === 'undefined')\n\t\t\t{\n\t\t\t\tthis[property] = options[property];\n\t\t\t}\n\t\t}\n\t}\n\n\tgetLayout(): Element\n\t{\n\t\tif (this.layout.item)\n\t\t{\n\t\t\treturn this.layout;\n\t\t}\n\n\t\tif (this.delimiter)\n\t\t{\n\t\t\tif (Type.isStringFilled(this.getText()))\n\t\t\t{\n\t\t\t\tthis.layout.item = Dom.create('span', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: [\n\t\t\t\t\t\t\t'popup-window-delimiter-section',\n\t\t\t\t\t\t\tthis.className ? this.className : '',\n\t\t\t\t\t\t].join(' ')\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t(this.layout.text = Tag.render`\n\t\t\t\t\t\t\t<span class=\"popup-window-delimiter-text\">${\n\t\t\t\t\t\t\t\tthis.allowHtml ? this.getText() : encodeSafe(this.getText())\n\t\t\t\t\t\t\t}</span>\n\t\t\t\t\t\t`)\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.layout.item = Tag.render`<span class=\"popup-window-delimiter\">`;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.layout.item = Dom.create(this.href ? 'a' : 'span', {\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: [\n\t\t\t\t\t\t'menu-popup-item',\n\t\t\t\t\t\t(this.className ? this.className : 'menu-popup-no-icon'),\n\t\t\t\t\t\t(this.hasSubMenu() ? 'menu-popup-item-submenu' : '')\n\t\t\t\t\t].join(' ')\n\t\t\t\t},\n\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: this.title,\n\t\t\t\t\tonclick: Type.isString(this.onclick) ? this.onclick : '', // compatibility\n\t\t\t\t\ttarget: this.target ? this.target : ''\n\t\t\t\t},\n\n\t\t\t\tdataset: this.dataset,\n\n\t\t\t\tevents:\n\t\t\t\t\tType.isFunction(this.onclick)\n\t\t\t\t\t\t? { click: this.onItemClick.bind(this) }\n\t\t\t\t\t\t: null\n\t\t\t\t,\n\n\t\t\t\tchildren: [\n\t\t\t\t\tDom.create('span', { props: { className: 'menu-popup-item-icon' } }),\n\t\t\t\t\t(this.layout.text = Tag.render`\n\t\t\t\t\t\t<span class=\"menu-popup-item-text\">${\n\t\t\t\t\t\t\tthis.allowHtml ? this.getText() : encodeSafe(this.getText())\n\t\t\t\t\t\t}</span>\n\t\t\t\t\t`)\n\t\t\t\t]\n\t\t\t});\n\n\t\t\tif (this.href)\n\t\t\t{\n\t\t\t\tthis.layout.item.href = this.href;\n\t\t\t}\n\n\t\t\tif (this.isDisabled())\n\t\t\t{\n\t\t\t\tthis.disable();\n\t\t\t}\n\n\t\t\tEvent.bind(this.layout.item, 'mouseenter', this.onItemMouseEnter.bind(this));\n\t\t\tEvent.bind(this.layout.item, 'mouseleave', this.onItemMouseLeave.bind(this));\n\t\t}\n\n\t\treturn this.layout;\n\t}\n\n\tgetContainer(): Element\n\t{\n\t\treturn this.getLayout().item;\n\t}\n\n\tgetTextContainer(): Element\n\t{\n\t\treturn this.getLayout().text;\n\t}\n\n\tgetText(): string | HTMLElement\n\t{\n\t\treturn this.text;\n\t}\n\n\tsetText(text: string | HTMLElement, allowHtml = false)\n\t{\n\t\tif (Type.isString(text) || Type.isElementNode(text))\n\t\t{\n\t\t\tthis.allowHtml = allowHtml;\n\t\t\tthis.text = text;\n\n\t\t\tif (Type.isElementNode(text))\n\t\t\t{\n\t\t\t\tDom.clean(this.getTextContainer());\n\t\t\t\tif (this.allowHtml)\n\t\t\t\t{\n\t\t\t\t\tDom.append(text, this.getTextContainer());\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getTextContainer().innerHTML = encodeSafe(text.outerHTML);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getTextContainer().innerHTML = this.allowHtml ? text : encodeSafe(text);\n\t\t\t}\n\t\t}\n\t}\n\n\thasSubMenu(): boolean\n\t{\n\t\treturn this.subMenuWindow !== null || this._items.length;\n\t}\n\n\tshowSubMenu(): void\n\t{\n\t\tif (!this.getMenuWindow().getPopupWindow().isShown())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.addSubMenu(this._items);\n\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tDom.addClass(this.layout.item, 'menu-popup-item-open');\n\n\t\t\tthis.closeSiblings();\n\t\t\tthis.closeChildren();\n\n\t\t\tconst popupWindow = this.subMenuWindow.getPopupWindow();\n\t\t\tif (!popupWindow.isShown())\n\t\t\t{\n\t\t\t\tthis.emit('SubMenu:onShow');\n\t\t\t\tpopupWindow.show();\n\t\t\t}\n\n\t\t\tthis.adjustSubMenu();\n\t\t}\n\t}\n\n\taddSubMenu(items: []): Menu\n\t{\n\t\tif (this.subMenuWindow !== null || !Type.isArray(items) || !items.length)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst rootMenuWindow = this.getMenuWindow().getRootMenuWindow() || this.getMenuWindow();\n\t\tconst rootOptions = Object.assign({}, rootMenuWindow.params);\n\t\tdelete rootOptions.events;\n\n\t\tconst subMenuOptions =\n\t\t\tType.isPlainObject(rootMenuWindow.params.subMenuOptions) ? rootMenuWindow.params.subMenuOptions : {}\n\t\t;\n\n\t\tconst options = Object.assign({}, rootOptions, subMenuOptions);\n\n\t\t//Override root menu options\n\t\toptions.autoHide = false;\n\t\toptions.menuShowDelay = this.menuShowDelay;\n\t\toptions.cacheable = this.isCacheable();\n\t\toptions.targetContainer = this.getMenuWindow().getPopupWindow().getTargetContainer();\n\t\toptions.bindOptions = {\n\t\t\tforceTop: true,\n\t\t\tforceLeft: true,\n\t\t\tforceBindPosition: true\n\t\t};\n\n\t\tdelete options.angle;\n\t\tdelete options.overlay;\n\n\t\tthis.subMenuWindow = new Menu('popup-submenu-' + this.id, this.layout.item, items, options);\n\t\tthis.subMenuWindow.setParentMenuWindow(this.getMenuWindow());\n\t\tthis.subMenuWindow.setParentMenuItem(this);\n\n\t\tthis.subMenuWindow.getPopupWindow().subscribe('onDestroy', this.handleSubMenuDestroy.bind(this));\n\t\tDom.addClass(this.layout.item, 'menu-popup-item-submenu');\n\n\t\treturn this.subMenuWindow;\n\t}\n\n\tcloseSubMenu(): void\n\t{\n\t\tthis.clearSubMenuTimeout();\n\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tDom.removeClass(this.layout.item, 'menu-popup-item-open');\n\n\t\t\tthis.closeChildren();\n\n\t\t\tconst popup = this.subMenuWindow.getPopupWindow();\n\t\t\tif (popup.isShown())\n\t\t\t{\n\t\t\t\tthis.emit('SubMenu:onClose');\n\t\t\t}\n\n\t\t\tthis.subMenuWindow.close();\n\t\t}\n\t}\n\n\tcloseSiblings(): void\n\t{\n\t\tconst siblings = this.menuWindow.getMenuItems();\n\t\tfor (let i = 0; i < siblings.length; i++)\n\t\t{\n\t\t\tif (siblings[i] !== this)\n\t\t\t{\n\t\t\t\tsiblings[i].closeSubMenu();\n\t\t\t}\n\t\t}\n\t}\n\n\tcloseChildren(): void\n\t{\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tconst children = this.subMenuWindow.getMenuItems();\n\t\t\tfor (let i = 0; i < children.length; i++)\n\t\t\t{\n\t\t\t\tchildren[i].closeSubMenu();\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroySubMenu(): void\n\t{\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tDom.removeClass(this.layout.item, 'menu-popup-item-open menu-popup-item-submenu');\n\t\t\tthis.destroyChildren();\n\t\t\tthis.subMenuWindow.destroy();\n\n\t\t\tthis.subMenuWindow = null;\n\t\t\tthis._items = [];\n\t\t}\n\t}\n\n\tdestroyChildren(): void\n\t{\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tconst children = this.subMenuWindow.getMenuItems();\n\t\t\tfor (let i = 0; i < children.length; i++)\n\t\t\t{\n\t\t\t\tchildren[i].destroySubMenu();\n\t\t\t}\n\t\t}\n\t}\n\n\tadjustSubMenu(): void\n\t{\n\t\tif (!this.subMenuWindow || !this.layout.item)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst popupWindow = this.subMenuWindow.getPopupWindow();\n\t\tconst itemRect = this.getBoundingClientRect();\n\n\t\tlet offsetLeft = itemRect.width + this.subMenuOffsetX;\n\t\tlet offsetTop = itemRect.height + this.getPopupPadding();\n\t\tlet angleOffset = itemRect.height / 2 - this.getPopupPadding();\n\t\tlet anglePosition = 'left';\n\n\t\tconst popupWidth = popupWindow.getPopupContainer().offsetWidth;\n\t\tconst popupHeight = popupWindow.getPopupContainer().offsetHeight;\n\t\tconst popupBottom = itemRect.top + popupHeight;\n\n\t\tconst targetContainer = this.getMenuWindow().getPopupWindow().getTargetContainer();\n\t\tconst isGlobalContext = this.getMenuWindow().getPopupWindow().isTargetDocumentBody();\n\t\tconst clientWidth = isGlobalContext ? document.documentElement.clientWidth : targetContainer.offsetWidth;\n\t\tconst clientHeight = isGlobalContext ? document.documentElement.clientHeight : targetContainer.offsetHeight;\n\n\t\t// let's try to fit a submenu to the browser viewport\n\t\tconst exceeded = popupBottom - clientHeight;\n\t\tif (exceeded > 0)\n\t\t{\n\t\t\tlet roundOffset = Math.ceil(exceeded / itemRect.height) * itemRect.height;\n\t\t\tif (roundOffset > itemRect.top)\n\t\t\t{\n\t\t\t\t// it cannot be higher than the browser viewport.\n\t\t\t\troundOffset -= Math.ceil((roundOffset - itemRect.top) / itemRect.height) * itemRect.height;\n\t\t\t}\n\n\t\t\tif (itemRect.bottom > (popupBottom - roundOffset))\n\t\t\t{\n\t\t\t\t// let's sync bottom boundaries.\n\t\t\t\troundOffset -= itemRect.bottom - (popupBottom - roundOffset) + this.getPopupPadding();\n\t\t\t}\n\n\t\t\toffsetTop += roundOffset;\n\t\t\tangleOffset += roundOffset;\n\t\t}\n\n\t\tif ((itemRect.left + offsetLeft + popupWidth) > clientWidth)\n\t\t{\n\t\t\tconst left = itemRect.left - popupWidth - this.subMenuOffsetX;\n\t\t\tif (left > 0)\n\t\t\t{\n\t\t\t\toffsetLeft = -popupWidth - this.subMenuOffsetX;\n\t\t\t\tanglePosition = 'right';\n\t\t\t}\n\t\t}\n\n\t\tpopupWindow.setBindElement(this.layout.item);\n\t\tpopupWindow.setOffset({ offsetLeft: offsetLeft, offsetTop: -offsetTop });\n\t\tpopupWindow.setAngle({ position: anglePosition, offset: angleOffset });\n\t\tpopupWindow.adjustPosition();\n\t}\n\n\tgetBoundingClientRect(): DOMRect\n\t{\n\t\tconst popup = this.getMenuWindow().getPopupWindow();\n\t\tif (popup.isTargetDocumentBody())\n\t\t{\n\t\t\treturn this.layout.item.getBoundingClientRect();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst rect = popup.getPositionRelativeToTarget(this.layout.item);\n\t\t\tconst targetContainer = this.getMenuWindow().getPopupWindow().getTargetContainer();\n\n\t\t\treturn new DOMRect(\n\t\t\t\trect.left - targetContainer.scrollLeft,\n\t\t\t\trect.top - targetContainer.scrollTop,\n\t\t\t\trect.width,\n\t\t\t\trect.height\n\t\t\t);\n\t\t}\n\t}\n\n\tgetPopupPadding(): number\n\t{\n\t\tif (!Type.isNumber(this.popupPadding))\n\t\t{\n\t\t\tif (this.subMenuWindow)\n\t\t\t{\n\t\t\t\tconst menuContainer = this.subMenuWindow.layout.menuContainer;\n\t\t\t\tthis.popupPadding = parseInt(Dom.style(menuContainer, 'paddingTop'), 10);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.popupPadding = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this.popupPadding;\n\t}\n\n\tgetSubMenu(): Menu | null\n\t{\n\t\treturn this.subMenuWindow;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tsetMenuWindow(menu: Menu): string\n\t{\n\t\tthis.menuWindow = menu;\n\t}\n\n\tgetMenuWindow(): Menu | null\n\t{\n\t\treturn this.menuWindow;\n\t}\n\n\tgetMenuShowDelay(): number\n\t{\n\t\treturn this.menuShowDelay;\n\t}\n\n\tenable(): void\n\t{\n\t\tthis.disabled = false;\n\t\tthis.getContainer().classList.remove('menu-popup-item-disabled');\n\t}\n\n\tdisable(): void\n\t{\n\t\tthis.disabled = true;\n\t\tthis.closeSubMenu();\n\t\tthis.getContainer().classList.add('menu-popup-item-disabled');\n\t}\n\n\tisDisabled(): boolean\n\t{\n\t\treturn this.disabled;\n\t}\n\n\tsetCacheable(cacheable): void\n\t{\n\t\tthis.cacheable = cacheable !== false;\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonItemClick(event): void\n\t{\n\t\tthis.onclick.call(this.menuWindow, event, this); //compatibility\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonItemMouseEnter(mouseEvent: MouseEvent): void\n\t{\n\t\tif (this.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { mouseEvent } });\n\t\tEventEmitter.emit(this, 'onMouseEnter', event, { thisArg: this });\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearSubMenuTimeout();\n\n\t\tif (this.hasSubMenu())\n\t\t{\n\t\t\tthis.subMenuTimeout = setTimeout(function() {\n\t\t\t\tthis.showSubMenu();\n\t\t\t}.bind(this), this.menuShowDelay);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.subMenuTimeout = setTimeout(function() {\n\t\t\t\tthis.closeSiblings();\n\t\t\t}.bind(this), this.menuShowDelay);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonItemMouseLeave(mouseEvent: MouseEvent): void\n\t{\n\t\tif (this.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { mouseEvent } });\n\t\tEventEmitter.emit(this, 'onMouseLeave', event, { thisArg: this });\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearSubMenuTimeout();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tclearSubMenuTimeout(): void\n\t{\n\t\tif (this.subMenuTimeout)\n\t\t{\n\t\t\tclearTimeout(this.subMenuTimeout);\n\t\t}\n\n\t\tthis.subMenuTimeout = null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleSubMenuDestroy(): void\n\t{\n\t\tthis.subMenuWindow = null;\n\t}\n}","import MenuItem from './menu-item';\nimport Popup from '../popup/popup';\nimport { Type, Text, Tag } from 'main.core';\nimport { type MenuOptions, type MenuItemOptions } from './menu-types';\nimport { type PopupTargetOptions } from '../popup/popup-types';\n\n/**\n * @memberof BX.Main\n */\nexport default class Menu\n{\n\tconstructor(options: MenuOptions)\n\t{\n\t\tlet [\n\t\t\tid: string,\n\t\t\tbindElement: PopupTargetOptions,\n\t\t\tmenuItems: MenuItemOptions[],\n\t\t\tparams: MenuOptions\n\t\t] = arguments;\n\n\t\tif (Type.isPlainObject(options) && !bindElement && !menuItems && !params)\n\t\t{\n\t\t\tparams = options;\n\t\t\tparams.compatibleMode = false;\n\n\t\t\tid = options.id;\n\t\t\tbindElement = options.bindElement;\n\t\t\tmenuItems = options.items;\n\n\t\t\tif (!Type.isStringFilled(id))\n\t\t\t{\n\t\t\t\tid = 'menu-popup-' + Text.getRandom();\n\t\t\t}\n\t\t}\n\n\t\tthis.id = id;\n\t\tthis.bindElement = bindElement;\n\n\t\t/**\n\t\t *\n\t\t * @type {MenuItem[]}\n\t\t */\n\t\tthis.menuItems = [];\n\t\tthis.itemsContainer = null;\n\t\tthis.params = params && typeof (params) === 'object' ? params : {};\n\t\tthis.parentMenuWindow = null;\n\t\tthis.parentMenuItem = null;\n\n\t\tif (menuItems && Type.isArray(menuItems))\n\t\t{\n\t\t\tfor (let i = 0; i < menuItems.length; i++)\n\t\t\t{\n\t\t\t\tthis.addMenuItemInternal(menuItems[i], null);\n\t\t\t}\n\t\t}\n\n\t\tthis.layout = {\n\t\t\tmenuContainer: null,\n\t\t\titemsContainer: null\n\t\t};\n\n\t\tthis.popupWindow = this.__createPopup();\n\t}\n\n\t/**\n\t * @private\n\t */\n\t__createPopup(): Popup\n\t{\n\t\tconst domItems = [];\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\tconst itemLayout = item.getLayout();\n\t\t\tdomItems.push(itemLayout.item);\n\t\t}\n\n\t\tconst defaults = {\n\t\t\tcloseByEsc: false,\n\t\t\tangle: false,\n\t\t\tautoHide: true,\n\t\t\toffsetTop: 1,\n\t\t\toffsetLeft: 0,\n\t\t\tanimation: 'fading'\n\t\t};\n\n\t\tconst options = Object.assign(defaults, this.params);\n\n\t\t//Override user params\n\t\toptions.noAllPaddings = true;\n\t\toptions.darkMode = false;\n\t\toptions.autoHideHandler = this.handleAutoHide.bind(this);\n\n\t\tthis.layout.itemsContainer = Tag.render`\n\t\t\t<div class=\"menu-popup-items\">${domItems}</div>\n\t\t`;\n\n\t\tthis.layout.menuContainer = Tag.render`\n\t\t\t<div class=\"menu-popup\">${this.layout.itemsContainer}</div>\n\t\t`;\n\n\t\tthis.itemsContainer = this.layout.itemsContainer;\n\t\toptions.content = this.layout.menuContainer;\n\n\t\t//Make internal event handlers first in the queue.\n\t\toptions.events = {\n\t\t\tonClose: this.handlePopupClose.bind(this),\n\t\t\tonDestroy: this.handlePopupDestroy.bind(this)\n\t\t};\n\n\t\tconst id = options.compatibleMode === false ? this.getId() : 'menu-popup-' + this.getId();\n\t\tconst popup = new Popup(id, this.bindElement, options);\n\t\tif (this.params && this.params.events)\n\t\t{\n\t\t\tpopup.subscribeFromOptions(this.params.events);\n\t\t}\n\n\t\treturn popup;\n\t}\n\n\tgetPopupWindow(): Popup\n\t{\n\t\treturn this.popupWindow;\n\t}\n\n\tshow(): void\n\t{\n\t\tthis.getPopupWindow().show();\n\t}\n\n\tclose(): void\n\t{\n\t\tthis.getPopupWindow().close();\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.getPopupWindow().destroy();\n\t}\n\n\ttoggle(): void\n\t{\n\t\tif (this.getPopupWindow().isShown())\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupClose(): void\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\titem.closeSubMenu();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupDestroy(): void\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\titem.destroySubMenu();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event): boolean\n\t{\n\t\treturn !this.containsTarget(event.target);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tcontainsTarget(target: Element): boolean\n\t{\n\t\tconst el = this.getPopupWindow().getPopupContainer();\n\t\tif (this.getPopupWindow().isShown() && (target === el || el.contains(target)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.getMenuItems().some(function(item: MenuItem) {\n\n\t\t\treturn item.getSubMenu() && item.getSubMenu().containsTarget(target);\n\n\t\t});\n\t}\n\n\tsetParentMenuWindow(parentMenu: Menu): void\n\t{\n\t\tif (parentMenu instanceof Menu)\n\t\t{\n\t\t\tthis.parentMenuWindow = parentMenu;\n\t\t}\n\t}\n\n\tgetParentMenuWindow(): Menu | null\n\t{\n\t\treturn this.parentMenuWindow;\n\t}\n\n\tgetRootMenuWindow(): Menu | null\n\t{\n\t\tlet root = null;\n\t\tlet parent = this.getParentMenuWindow();\n\t\twhile (parent !== null)\n\t\t{\n\t\t\troot = parent;\n\t\t\tparent = parent.getParentMenuWindow();\n\t\t}\n\n\t\treturn root;\n\t}\n\n\tsetParentMenuItem(parentItem: MenuItem): void\n\t{\n\t\tif (parentItem instanceof MenuItem)\n\t\t{\n\t\t\tthis.parentMenuItem = parentItem;\n\t\t}\n\t}\n\n\tgetParentMenuItem(): MenuItem | null\n\t{\n\t\treturn this.parentMenuItem;\n\t}\n\n\taddMenuItem(menuItemJson: any, targetItemId: string): MenuItem\n\t{\n\t\tconst menuItem = this.addMenuItemInternal(menuItemJson, targetItemId);\n\t\tif (!menuItem)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst itemLayout = menuItem.getLayout();\n\t\tconst targetItem = this.getMenuItem(targetItemId);\n\t\tif (targetItem !== null)\n\t\t{\n\t\t\tconst targetLayout = targetItem.getLayout();\n\t\t\tthis.itemsContainer.insertBefore(itemLayout.item, targetLayout.item);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.itemsContainer.appendChild(itemLayout.item);\n\t\t}\n\n\t\treturn menuItem;\n\t}\n\n\t/**\n\t * @private\n\t */\n\taddMenuItemInternal(menuItemJson: any, targetItemId: string): MenuItem\n\t{\n\t\tif (\n\t\t\t!menuItemJson ||\n\t\t\t(\n\t\t\t\t!menuItemJson.delimiter &&\n\t\t\t\t!Type.isStringFilled(menuItemJson.text) &&\n\t\t\t\t!Type.isStringFilled(menuItemJson.html) &&\n\t\t\t\t!Type.isElementNode(menuItemJson.html)\n\t\t\t) ||\n\t\t\t(menuItemJson.id && this.getMenuItem(menuItemJson.id) !== null)\n\t\t)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (Type.isNumber(this.params.menuShowDelay))\n\t\t{\n\t\t\tmenuItemJson.menuShowDelay = this.params.menuShowDelay;\n\t\t}\n\n\t\tconst menuItem = new MenuItem(menuItemJson);\n\t\tmenuItem.setMenuWindow(this);\n\n\t\tconst position = this.getMenuItemPosition(targetItemId);\n\t\tif (position >= 0)\n\t\t{\n\t\t\tthis.menuItems.splice(position, 0, menuItem);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.menuItems.push(menuItem);\n\t\t}\n\n\t\treturn menuItem;\n\t}\n\n\tremoveMenuItem(itemId: string, options = {\n\t\tdestroyEmptyPopup: true,\n\t}): void\n\t{\n\t\tconst item = this.getMenuItem(itemId);\n\t\tif (!item)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let position = 0; position < this.menuItems.length; position++)\n\t\t{\n\t\t\tif (this.menuItems[position] === item)\n\t\t\t{\n\t\t\t\titem.destroySubMenu();\n\t\t\t\tthis.menuItems.splice(position, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.menuItems.length)\n\t\t{\n\t\t\tconst menuWindow = item.getMenuWindow();\n\t\t\tif (menuWindow)\n\t\t\t{\n\t\t\t\tconst parentMenuItem = menuWindow.getParentMenuItem();\n\t\t\t\tif (parentMenuItem)\n\t\t\t\t{\n\t\t\t\t\tparentMenuItem.destroySubMenu();\n\t\t\t\t}\n\t\t\t\telse if (options.destroyEmptyPopup)\n\t\t\t\t{\n\t\t\t\t\tmenuWindow.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\titem.layout.item.parentNode.removeChild(item.layout.item);\n\t\titem.layout = {\n\t\t\titem: null,\n\t\t\ttext: null\n\t\t};\n\t}\n\n\tgetMenuItem(itemId: string): MenuItem | null\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tif (this.menuItems[i].id && this.menuItems[i].id === itemId)\n\t\t\t{\n\t\t\t\treturn this.menuItems[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn this.menuItems;\n\t}\n\n\tgetMenuItemPosition(itemId: string): number\n\t{\n\t\tif (itemId)\n\t\t{\n\t\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t\t{\n\t\t\t\tif (this.menuItems[i].id && this.menuItems[i].id === itemId)\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\tgetMenuContainer()\n\t{\n\t\treturn this.getPopupWindow().getPopupContainer();\n\t}\n}","import Menu from './menu';\nimport { Type } from 'main.core';\nimport { MenuOptions } from './menu-types';\n\nexport default class MenuManager\n{\n\t/**\n\t * @private\n\t */\n\tstatic Data: { [id: string]: Menu } = {};\n\n\t/**\n\t * @private\n\t */\n\tstatic currentItem: ? Menu = null;\n\n\tconstructor()\n\t{\n\t\tthrow new Error('You cannot make an instance of MenuManager.');\n\t}\n\n\tstatic show(...args)\n\t{\n\t\tif (this.currentItem !== null)\n\t\t{\n\t\t\tthis.currentItem.popupWindow.close();\n\t\t}\n\n\t\tthis.currentItem = this.create.apply(this, args);\n\t\tthis.currentItem.popupWindow.show();\n\t}\n\n\tstatic create(options: MenuOptions)\n\t{\n\t\tlet menuId = null;\n\n\t\t//Compatibility\n\t\tconst bindElement = arguments[1];\n\t\tconst menuItems = arguments[2];\n\t\tconst params = arguments[3];\n\n\t\tif (Type.isPlainObject(options) && !bindElement && !menuItems && !params)\n\t\t{\n\t\t\tmenuId = options.id;\n\t\t\tif (!Type.isStringFilled(menuId))\n\t\t\t{\n\t\t\t\tthrow new Error('BX.Main.Menu.create: \"id\" parameter is required.');\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmenuId = options;\n\t\t}\n\n\t\tif (!this.Data[menuId])\n\t\t{\n\t\t\tconst menu = new Menu(options, bindElement, menuItems, params);\n\t\t\tmenu.getPopupWindow().subscribe('onDestroy', () => {\n\t\t\t\tMenuManager.destroy(menuId);\n\t\t\t});\n\n\t\t\tthis.Data[menuId] = menu;\n\t\t}\n\n\t\treturn this.Data[menuId];\n\t}\n\n\tstatic getCurrentMenu(): Menu | null\n\t{\n\t\treturn this.currentItem;\n\t}\n\n\tstatic getMenuById(id): Menu | null\n\t{\n\t\treturn this.Data[id] ? this.Data[id] : null;\n\t}\n\n\t/**\n\t * compatibility\n\t * @private\n\t */\n\tstatic onPopupDestroy(popupMenuWindow: Menu)\n\t{\n\t\tthis.destroy(popupMenuWindow.id);\n\t}\n\n\tstatic destroy(id)\n\t{\n\t\tconst menu = this.getMenuById(id);\n\t\tif (menu)\n\t\t{\n\t\t\tif (this.currentItem === menu)\n\t\t\t{\n\t\t\t\tthis.currentItem = null;\n\t\t\t}\n\n\t\t\tdelete this.Data[id];\n\t\t\tmenu.getPopupWindow().destroy();\n\t\t}\n\t}\n}","import Popup from '../popup/popup';\n\n/**\n * @deprecated use Popup class instead: import { Popup } from 'main.popup'\n */\nexport default class PopupWindow extends Popup\n{\n\n}","import Button from './button';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class PopupWindowButton extends Button\n{\n\n}","import Button from './button';\nimport { Dom } from 'main.core';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class ButtonLink extends Button\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\n\t\tthis.buttonNode = Dom.create(\n\t\t\t'span',\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'popup-window-button popup-window-button-link' +\n\t\t\t\t\t\t(this.className.length > 0 ? ' ' + this.className : '')\n\t\t\t\t\t,\n\t\t\t\t\tid: this.id\n\t\t\t\t},\n\t\t\t\ttext: this.text,\n\t\t\t\tevents: this.contextEvents\n\t\t\t}\n\t\t);\n\t}\n}","import ButtonLink from './buttonlink';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class PopupWindowButtonLink extends ButtonLink\n{\n\n}","import Button from './button';\nimport { Dom } from 'main.core';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class CustomButton extends Button\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\n\t\tthis.buttonNode = Dom.create(\n\t\t\t'span',\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: (this.className.length > 0 ? this.className : ''),\n\t\t\t\t\tid: this.id\n\t\t\t\t},\n\t\t\t\tevents: this.contextEvents,\n\t\t\t\ttext: this.text\n\t\t\t}\n\t\t);\n\t}\n}","import CustomButton from './custombutton';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class PopupWindowCustomButton extends CustomButton\n{\n\n}","import Menu from '../menu/menu';\n\n/**\n * @deprecated use Menu class instead: import { Menu } from 'main.popup'\n */\nexport default class PopupMenuWindow extends Menu\n{\n\n}","import MenuItem from '../menu/menu-item';\n\n/**\n * @deprecated use Menu.Item class instead: import { MenuItem } from 'main.popup'\n */\nexport default class PopupMenuItem extends MenuItem\n{\n\n}","import { Dom } from 'main.core';\nimport Popup from '../popup/popup';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\n\n/**\n * @deprecated\n */\nexport default class InputPopup\n{\n\tconstructor(params)\n\t{\n\t\tthis.id = params.id || 'bx-inp-popup-' + Math.round(Math.random() * 1000000);\n\t\tthis.handler = params.handler || false;\n\t\tthis.values = params.values || false;\n\t\tthis.pInput = params.input;\n\t\tthis.bValues = !!this.values;\n\t\tthis.defaultValue = params.defaultValue || '';\n\t\tthis.openTitle = params.openTitle || '';\n\t\tthis.className = params.className || '';\n\t\tthis.noMRclassName = params.noMRclassName || 'ec-no-rm';\n\t\tthis.emptyClassName = params.noMRclassName || 'ec-label';\n\n\t\tconst _this = this;\n\t\tthis.curInd = false;\n\n\t\tif (this.bValues)\n\t\t{\n\t\t\tthis.pInput.onfocus = this.pInput.onclick = function(e) {\n\t\t\t\tif (this.value == _this.defaultValue)\n\t\t\t\t{\n\t\t\t\t\tthis.value = '';\n\t\t\t\t\tthis.className = _this.className;\n\t\t\t\t}\n\t\t\t\t_this.ShowPopup();\n\t\t\t\treturn e.preventDefault();\n\t\t\t};\n\n\t\t\tthis.pInput.onblur = function() {\n\t\t\t\tif (_this.bShowed)\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t_this.ClosePopup(true);\n\t\t\t\t\t}, 200);\n\t\t\t\t}\n\t\t\t\t_this.OnChange();\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.pInput.className = this.noMRclassName;\n\t\t\tthis.pInput.onblur = this.OnChange.bind(this);\n\t\t}\n\t}\n\n\tShowPopup()\n\t{\n\t\tif (this.bShowed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst _this = this;\n\t\tif (!this.oPopup)\n\t\t{\n\t\t\tconst pWnd = Dom.create('DIV', { props: { className: 'bxecpl-loc-popup ' + this.className } });\n\n\t\t\tfor (let i = 0, l = this.values.length; i < l; i++)\n\t\t\t{\n\t\t\t\tconst pRow = pWnd.appendChild(Dom.create('DIV', {\n\t\t\t\t\tprops: { id: 'bxecmr_' + i },\n\t\t\t\t\ttext: this.values[i].NAME,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tmouseover: function() {\n\t\t\t\t\t\t\tDom.addClass(this, 'bxecplloc-over');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmouseout: function() {\n\t\t\t\t\t\t\tDom.removeClass(this, 'bxecplloc-over');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tconst ind = this.id.substr('bxecmr_'.length);\n\t\t\t\t\t\t\t_this.pInput.value = _this.values[ind].NAME;\n\t\t\t\t\t\t\t_this.curInd = ind;\n\t\t\t\t\t\t\t_this.OnChange();\n\t\t\t\t\t\t\t_this.ClosePopup(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tif (this.values[i].DESCRIPTION)\n\t\t\t\t{\n\t\t\t\t\tpRow.title = this.values[i].DESCRIPTION;\n\t\t\t\t}\n\t\t\t\tif (this.values[i].CLASS_NAME)\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(pRow, this.values[i].CLASS_NAME);\n\t\t\t\t}\n\n\t\t\t\tif (this.values[i].URL)\n\t\t\t\t{\n\t\t\t\t\tpRow.appendChild(Dom.create('a', {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\thref: this.values[i].URL,\n\t\t\t\t\t\t\tclassName: 'bxecplloc-view',\n\t\t\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\t\t\ttitle: this.openTitle\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oPopup = new Popup(this.id, this.pInput, {\n\t\t\t\tautoHide: true,\n\t\t\t\toffsetTop: 1,\n\t\t\t\toffsetLeft: 0,\n\t\t\t\tlightShadow: true,\n\t\t\t\tcloseByEsc: true,\n\t\t\t\tcontent: pWnd,\n\t\t\t\tevents: {\n\t\t\t\t\tonClose: this.ClosePopup.bind(this)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.oPopup.show();\n\t\tthis.pInput.select();\n\t\tthis.bShowed = true;\n\n\t\tEventEmitter.emit(this, 'onInputPopupShow', new BaseEvent({ compatData: [this] }));\n\t}\n\n\tClosePopup(bClosePopup)\n\t{\n\t\tthis.bShowed = false;\n\n\t\tif (this.pInput.value === '')\n\t\t{\n\t\t\tthis.OnChange();\n\t\t}\n\n\t\tEventEmitter.emit(this, 'onInputPopupClose', new BaseEvent({ compatData: [this] }));\n\n\t\tif (bClosePopup === true)\n\t\t{\n\t\t\tthis.oPopup.close();\n\t\t}\n\t}\n\n\tOnChange()\n\t{\n\t\tlet val = this.pInput.value;\n\t\tif (this.bValues)\n\t\t{\n\t\t\tif (this.pInput.value == '' || this.pInput.value == this.defaultValue)\n\t\t\t{\n\t\t\t\tthis.pInput.value = this.defaultValue;\n\t\t\t\tthis.pInput.className = this.emptyClassName;\n\t\t\t\tval = '';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.pInput.className = '';\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(parseInt(this.curInd)) || this.curInd !== false && val != this.values[this.curInd].NAME)\n\t\t{\n\t\t\tthis.curInd = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.curInd = parseInt(this.curInd);\n\t\t}\n\n\t\tEventEmitter.emit(\n\t\t\tthis,\n\t\t\t'onInputPopupChanged',\n\t\t\tnew BaseEvent({ compatData: [this, this.curInd, val] })\n\t\t);\n\n\t\tif (this.handler && typeof this.handler == 'function')\n\t\t{\n\t\t\tthis.handler({ ind: this.curInd, value: val });\n\t\t}\n\t}\n\n\tSet(ind, val, bOnChange)\n\t{\n\t\tthis.curInd = ind;\n\t\tif (this.curInd !== false)\n\t\t{\n\t\t\tthis.pInput.value = this.values[this.curInd].NAME;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.pInput.value = val;\n\t\t}\n\n\t\tif (bOnChange !== false)\n\t\t{\n\t\t\tthis.OnChange();\n\t\t}\n\t}\n\n\tGet(ind)\n\t{\n\t\tlet id = false;\n\t\tif (typeof ind == 'undefined')\n\t\t{\n\t\t\tind = this.curInd;\n\t\t}\n\n\t\tif (ind !== false && this.values[ind])\n\t\t{\n\t\t\tid = this.values[ind].ID;\n\t\t}\n\n\t\treturn id;\n\t}\n\n\tGetIndex(id)\n\t{\n\t\tfor (let i = 0, l = this.values.length; i < l; i++)\n\t\t{\n\t\t\tif (this.values[i].ID == id)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tDeactivate(bDeactivate)\n\t{\n\t\tif (this.pInput.value == '' || this.pInput.value == this.defaultValue)\n\t\t{\n\t\t\tif (bDeactivate)\n\t\t\t{\n\t\t\t\tthis.pInput.value = '';\n\t\t\t\tthis.pInput.className = this.noMRclassName;\n\t\t\t}\n\t\t\telse if (this.oEC.bUseMR)\n\t\t\t{\n\t\t\t\tthis.pInput.value = this.defaultValue;\n\t\t\t\tthis.pInput.className = this.emptyClassName;\n\t\t\t}\n\t\t}\n\n\t\tthis.pInput.disabled = bDeactivate;\n\t}\n}","/*\n\n//ES6\nimport { Popup, PopupManager, CloseIconSize } from 'main.popup';\nconst popup = new Popup();\nPopupManager.create();\n\n//ES5\nvar popup = new BX.Main.Popup();\nBX.Main.PopupManager.create();\nBX.Main.Popup.CloseIconSize;\n\n//ES6\nimport { Menu, MenuItem, MenuManager } from 'main.popup';\nconst menu = new Menu();\nconst item = new MenuItem();\nMenuManager.create();\n\n//ES5\nvar menu = new BX.Main.Menu();\nvar item = new BX.Main.MenuItem();\nBX.Main.MenuManager.create();\n\n */\n\nimport Popup from './popup/popup';\nimport PopupManager from './popup/popup-manager';\nimport CloseIconSize from './popup/popup-close-icon-size';\nimport Menu from './menu/menu';\nimport MenuManager from './menu/menu-manager';\nimport MenuItem from './menu/menu-item';\nimport { type PopupOptions } from './popup/popup-types';\nimport { type MenuOptions, type MenuItemOptions } from './menu/menu-types';\nimport type PositionEvent from './popup/position-event';\n\nimport PopupWindow from './compatibility/popup-window';\nimport PopupWindowButton from './compatibility/popup-window-button';\nimport PopupWindowButtonLink from './compatibility/popup-window-button-link';\nimport PopupWindowCustomButton from './compatibility/popup-window-custom-button';\nimport PopupMenuWindow from './compatibility/popup-menu-window';\nimport PopupMenuItem from './compatibility/popup-menu-item';\nimport InputPopup from './compatibility/input-popup';\nimport Button from './compatibility/button';\nimport ButtonLink from './compatibility/buttonlink';\nimport CustomButton from './compatibility/custombutton';\n\nimport { Reflection } from 'main.core';\n\nimport 'ui.design-tokens';\nimport 'ui.fonts.opensans';\nimport './css/popup.css';\n\nexport {\n\tPopup,\n\tMenu,\n\tMenuItem,\n\tPopupManager,\n\tMenuManager,\n\tCloseIconSize,\n};\n\nexport type {\n\tPopupOptions,\n\tMenuOptions,\n\tMenuItemOptions,\n\tPositionEvent,\n};\n\n//Compatibility\nexport {\n\tPopupWindow,\n\tPopupMenuWindow,\n\tPopupMenuItem,\n\tPopupManager as PopupWindowManager,\n\tMenuManager as PopupMenu,\n\tPopupWindowButton,\n\tPopupWindowButtonLink,\n\tPopupWindowCustomButton\n};\n\nconst BX = Reflection.namespace('BX');\n\n/** @deprecated use BX.Main.Popup or import { Popup } from 'main.popup' */\nBX.PopupWindow = Popup;\n\n/** @deprecated use BX.Main.PopupManager or import { PopupManager } from 'main.popup' */\nBX.PopupWindowManager = PopupManager;\n\n/** @deprecated use BX.Main.Menu or import { Menu } from 'main.popup' */\nBX.PopupMenuWindow = Menu;\n\n/** @deprecated use BX.Main.MenuManager or import { MenuManager } from 'main.popup' */\nBX.PopupMenu = MenuManager;\n\n/** @deprecated use BX.Main.MenuItem or import { MenuItem } from 'main.popup' */\nBX.PopupMenuItem = MenuItem;\n\n/** @deprecated use BX.UI.Button */\nBX.PopupWindowButton = Button;\n\n/** @deprecated use BX.UI.Button */\nBX.PopupWindowButtonLink = ButtonLink;\n\n/** @deprecated use BX.UI.Button */\nBX.PopupWindowCustomButton = CustomButton;\n\n/** @deprecated use another API */\nwindow.BXInputPopup = InputPopup;"],"names":["Button","params","popupWindow","text","id","className","events","contextEvents","eventName","Type","isFunction","bind","buttonNode","Dom","create","props","length","name","clean","adjust","isString","removeClass","addClass","PositionEvent","value","isNumber","BaseEvent","CloseIconSize","Object","freeze","LARGE","SMALL","aliases","onPopupWindowInit","namespace","onPopupWindowIsInitialized","onPopupFirstShow","onPopupShow","onAfterPopupShow","onPopupClose","onPopupAfterClose","onPopupDestroy","onPopupFullscreenLeave","onPopupFullscreenEnter","onPopupDragStart","onPopupDrag","onPopupDragEnd","onPopupResizeStart","onPopupResize","onPopupResizeEnd","EventEmitter","registerAliases","disabledScrolls","WeakMap","Popup","options","isPlainObject","option","defaultValue","isUndefined","defaultOptions","setEventNamespace","arguments","popupId","bindElement","compatibleMode","isBoolean","isStringFilled","Text","getRandom","toLowerCase","emit","compatData","uniquePopupId","zIndex","parseInt","zIndexAbsolute","buttons","isArray","offsetTop","getOption","offsetLeft","firstShow","bordersWidth","bindElementPos","closeIcon","resizeIcon","angle","angleArrowElement","overlay","titleBar","bindOptions","autoHide","disableScroll","isScrollBlock","autoHideHandler","handleAutoHide","handleOverlayClick","isAutoHideBinded","closeByEsc","isCloseByEscBinded","toFrontOnShow","cacheable","destroyed","fixed","width","height","minWidth","minHeight","maxWidth","maxHeight","padding","contentPadding","background","contentBackground","borderRadius","contentBorderRadius","targetContainer","isElementNode","document","body","dragOptions","cursor","callback","dragged","dragPageX","dragPageY","animationShowClassName","animationCloseClassName","animationCloseEventType","handleDocumentMouseMove","handleDocumentMouseUp","handleDocumentKeyUp","handleResizeWindow","handleResize","handleMove","onTitleMouseDown","handleFullScreen","subscribeFromOptions","popupClassName","darkMode","Tag","render","values","includes","closeIconSize","handleCloseIconClick","style","contentContainer","popupContainer","appendChild","zIndexComponent","ZIndexManager","register","zIndexOptions","buttonsContainer","contentColor","setContentColor","setAngle","setOverlay","setOffset","setBindElement","setTitleBar","setContent","content","setButtons","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setResizeMode","resizable","setPadding","setContentPadding","setBorderRadius","setContentBorderRadius","setBackground","setContentBackground","setAnimation","animation","setCacheable","setToFrontOnShow","setFixed","contentNoPaddings","noAllPaddings","bindOnResize","Event","window","hasParent","isDomNode","parentNode","isCompatibleMode","display","innerHTML","remove","ButtonClass","Reflection","getClass","newButtons","i","button","push","setContext","getId","top","left","clientX","clientY","pageX","pageY","bottom","isTargetDocumentBody","isFixed","getBoundingClientRect","getPosition","getPositionRelativeToTarget","windowSize","getWindowSize","windowScroll","getWindowScroll","popupWidth","getPopupContainer","offsetWidth","popupHeight","offsetHeight","forceTop","innerWidth","scrollLeft","innerHeight","scrollTop","element","offsetElement","offsetParent","getTargetContainer","elementRect","DOMRect","pageXOffset","pageYOffset","position","angleMinLeft","defaultOffset","offset","angleLeftOffset","Math","max","minOffset","maxOffset","min","marginLeft","removeProperty","setWidthProperty","setHeightProperty","property","indexOf","getResizableContainer","getContentContainer","overflowX","classList","add","getTitleContainer","Browser","isIE11","toKebabCase","hasOtherProps","some","prop","getPropertyValue","overflowY","radius","setProperty","color","backgroundColor","flag","mode","handleResizeMouseDown","event","_startDrag","resizeContentPos","resizeContentOffset","offsetX","offsetY","scrollWidth","documentElement","getMinWidth","getMinHeight","getMaxWidth","getMaxHeight","isTopOrBottomAngle","draggable","enable","bindClosingByEsc","unbindClosingByEsc","unbind","bindAutoHide","unbindAutoHide","isShown","handleContainerClick","addEventListener","removeEventListener","isDestroyed","_tryCloseByEvent","target","contains","tryCloseByEvent","setTimeout","close","stopPropagation","resizeOverlay","getZIndexComponent","opacity","parseFloat","toPrecision","overlayTimeout","clearInterval","setInterval","scrollHeight","clientHeight","getZIndex","disable","showOverlay","shouldFrontOnShow","bringToFront","adjustPosition","animateOpening","animateClosing","hideOverlay","isCacheable","destroy","show","handleTransitionEnd","showClassName","closeClassName","closeAnimationType","animationName","unbindAll","removeOverlay","unregister","getBindElementPos","forceBindPosition","angleTopOffset","forceLeft","bindLeft","isBottomAngle","isTopAngle","getAngleHeight","fullscreenStatus","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","requestFullScreen","mozRequestFullScreen","webkitRequestFullScreen","console","log","keyCode","checkEscPressed","getZindex","restrict","floatWidth","floatHeight","setCapture","ondrag","onselectstart","MozUserSelect","preventDefault","releaseCapture","popups","get","Set","set","size","positionTopXOffset","popupZindex","popupOverlayZindex","angleMaxLeft","angleMinRight","angleMaxRight","angleMinBottom","angleMaxBottom","angleMinTop","angleMaxTop","escCallbackIndex","escCallback","PopupManager","Error","compatMode","getPopupById","subscribe","handlePopupShow","handlePopupClose","getTarget","subscribeOnce","handlePopupDestroy","_popups","forEach","popup","error","filter","_currentPopup","getPopups","handleOnAfterInit","onSubMenuShow","onSubMenuClose","reEscape","escapeEntities","encodeSafe","replace","item","MenuItem","allowHtml","html","match","warn","getText","title","delimiter","href","dataset","menuShowDelay","subMenuOffsetX","_items","items","disabled","onclick","menuWindow","subMenuWindow","layout","getLayout","hasOwnProperty","join","children","hasSubMenu","attrs","click","onItemClick","isDisabled","onItemMouseEnter","onItemMouseLeave","getTextContainer","append","outerHTML","getMenuWindow","getPopupWindow","addSubMenu","closeSiblings","closeChildren","adjustSubMenu","rootMenuWindow","getRootMenuWindow","rootOptions","assign","subMenuOptions","Menu","setParentMenuWindow","setParentMenuItem","handleSubMenuDestroy","clearSubMenuTimeout","siblings","getMenuItems","closeSubMenu","destroyChildren","destroySubMenu","itemRect","getPopupPadding","angleOffset","anglePosition","popupBottom","isGlobalContext","clientWidth","exceeded","roundOffset","ceil","rect","popupPadding","menuContainer","menu","getContainer","call","mouseEvent","data","thisArg","isDefaultPrevented","subMenuTimeout","showSubMenu","clearTimeout","menuItems","itemsContainer","parentMenuWindow","parentMenuItem","addMenuItemInternal","__createPopup","domItems","itemLayout","defaults","onClose","onDestroy","containsTarget","el","getSubMenu","parentMenu","root","parent","getParentMenuWindow","parentItem","menuItemJson","targetItemId","menuItem","targetItem","getMenuItem","targetLayout","insertBefore","setMenuWindow","getMenuItemPosition","splice","itemId","destroyEmptyPopup","getParentMenuItem","removeChild","MenuManager","currentItem","args","apply","menuId","Data","popupMenuWindow","getMenuById","PopupWindow","PopupWindowButton","ButtonLink","PopupWindowButtonLink","CustomButton","PopupWindowCustomButton","PopupMenuWindow","PopupMenuItem","InputPopup","round","random","handler","pInput","input","bValues","openTitle","noMRclassName","emptyClassName","_this","curInd","onfocus","e","ShowPopup","onblur","bShowed","ClosePopup","OnChange","oPopup","pWnd","l","pRow","NAME","mouseover","mouseout","ind","substr","DESCRIPTION","CLASS_NAME","URL","lightShadow","select","bClosePopup","val","isNaN","bOnChange","ID","bDeactivate","oEC","bUseMR","BX","PopupWindowManager","PopupMenu","BXInputPopup"],"mappings":"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"}