{"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> = 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
\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\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`
`\n\t\t;\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tthis.popupContainer = Tag.render\n\t\t\t`${[this.titleBar, this.contentContainer, this.closeIcon]}`\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 = ' ';\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`
${newButtons}
`\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 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`
`;\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
\n\t\t\t\t\t\t${this.angleArrowElement}\n\t\t\t\t\t
\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
\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
\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 = 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 = 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'<': '<',\n\t'>': '>',\n\t\"'\": ''',\n\t'\"': '"',\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${\n\t\t\t\t\t\t\t\tthis.allowHtml ? this.getText() : encodeSafe(this.getText())\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`)\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.layout.item = Tag.render``;\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${\n\t\t\t\t\t\t\tthis.allowHtml ? this.getText() : encodeSafe(this.getText())\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\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
${domItems}
\n\t\t`;\n\n\t\tthis.layout.menuContainer = Tag.render`\n\t\t\t
${this.layout.itemsContainer}
\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): 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\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","getPosition","getPositionRelativeToTarget","windowSize","getWindowSize","windowScroll","getWindowScroll","popupWidth","getPopupContainer","offsetWidth","popupHeight","offsetHeight","forceTop","innerWidth","scrollLeft","innerHeight","isFixed","scrollTop","element","offsetElement","offsetParent","getTargetContainer","elementRect","getBoundingClientRect","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","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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"}