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

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

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

Youez - 2016 - github.com/yon3zu
LinuXploit