%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.226.172.130
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/main/popup/dist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.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.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}","import Button from '../compatibility/button';\n\nimport { Type, Text, Tag, Event, Dom, Browser, Reflection } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\nimport { type PopupOptions, type PopupTarget, type PopupAnimationOptions } from './popup-types';\nimport { ZIndexManager, ZIndexComponent } from 'main.core.z-index-manager';\nimport PositionEvent from './position-event';\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\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.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\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.targetContainer = Type.isElementNode(params.targetContainer) ? params.targetContainer : document.body;\n\n\t\tthis.dragOptions = {\n\t\t\tcursor: '',\n\t\t\tcallback: function() {\n\t\t\t},\n\t\t\teventName: ''\n\t\t};\n\n\t\tthis.dragged = false;\n\t\tthis.dragPageX = 0;\n\t\tthis.dragPageY = 0;\n\n\t\tthis.animationShowClassName = null;\n\t\tthis.animationCloseClassName = null;\n\t\tthis.animationCloseEventType = null;\n\n\t\tthis.handleDocumentMouseMove = this.handleDocumentMouseMove.bind(this);\n\t\tthis.handleDocumentMouseUp = this.handleDocumentMouseUp.bind(this);\n\t\tthis.handleDocumentKeyUp = this.handleDocumentKeyUp.bind(this);\n\t\tthis.handleResizeWindow = this.handleResizeWindow.bind(this);\n\t\tthis.handleResize = this.handleResize.bind(this);\n\t\tthis.handleMove = this.handleMove.bind(this);\n\t\tthis.onTitleMouseDown = this.onTitleMouseDown.bind(this);\n\t\tthis.handleFullScreen = this.handleFullScreen.bind(this);\n\n\t\tthis.subscribeFromOptions(params.events);\n\n\t\tlet popupClassName = 'popup-window';\n\n\t\tif (params.titleBar)\n\t\t{\n\t\t\tpopupClassName += ' popup-window-with-titlebar';\n\t\t}\n\n\t\tif (params.className && Type.isStringFilled(params.className))\n\t\t{\n\t\t\tpopupClassName += ' ' + params.className;\n\t\t}\n\n\t\tif (params.darkMode)\n\t\t{\n\t\t\tpopupClassName += ' popup-window-dark';\n\t\t}\n\n\t\tif (params.titleBar)\n\t\t{\n\t\t\tthis.titleBar = Tag.render`\n\t\t\t\t<div class=\"popup-window-titlebar\" id=\"popup-window-titlebar-${popupId}\"></div>\n\t\t\t`;\n\t\t}\n\n\t\tif (params.closeIcon)\n\t\t{\n\t\t\tconst className = 'popup-window-close-icon' + (params.titleBar ? ' popup-window-titlebar-close-icon' : '');\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\n\t\t}\n\n\t\tif (params.angle)\n\t\t{\n\t\t\tthis.setAngle(params.angle);\n\t\t}\n\n\t\tif (params.overlay)\n\t\t{\n\t\t\tthis.setOverlay(params.overlay);\n\t\t}\n\n\t\tthis.setOffset(params);\n\t\tthis.setBindElement(bindElement);\n\t\tthis.setTitleBar(params.titleBar);\n\t\tthis.setContent(params.content);\n\t\tthis.setButtons(params.buttons);\n\t\tthis.setWidth(params.width);\n\t\tthis.setHeight(params.height);\n\t\tthis.setMinWidth(params.minWidth);\n\t\tthis.setMinHeight(params.minHeight);\n\t\tthis.setMaxWidth(params.maxWidth);\n\t\tthis.setMaxHeight(params.maxHeight);\n\t\tthis.setResizeMode(params.resizable);\n\t\tthis.setPadding(params.padding);\n\t\tthis.setContentPadding(params.contentPadding);\n\t\tthis.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\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 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 + windowScroll.scrollTop,\n\t\t\t\tbottom: windowSize.innerHeight / 2 - popupHeight / 2 + 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\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\tsetResizeMode(mode: boolean): void\n\t{\n\t\tif (mode === true || Type.isPlainObject(mode))\n\t\t{\n\t\t\tif (!this.resizeIcon)\n\t\t\t{\n\t\t\t\tthis.resizeIcon = Tag.render`\n\t\t\t\t\t<div class=\"popup-window-resize\" onmousedown=\"${this.handleResizeMouseDown.bind(this)}\"></div>\n\t\t\t\t`;\n\n\t\t\t\tthis.getPopupContainer().appendChild(this.resizeIcon);\n\t\t\t}\n\n\t\t\t//Compatibility\n\t\t\tthis.setMinWidth(mode.minWidth);\n\t\t\tthis.setMinHeight(mode.minHeight);\n\t\t}\n\t\telse if (mode === false && this.resizeIcon)\n\t\t{\n\t\t\tDom.remove(this.resizeIcon);\n\t\t\tthis.resizeIcon = null;\n\t\t}\n\t}\n\n\tgetTargetContainer(): HTMLElement\n\t{\n\t\treturn this.targetContainer;\n\t}\n\n\tisTargetDocumentBody(): boolean\n\t{\n\t\treturn this.getTargetContainer() === document.body;\n\t}\n\n\tgetPopupContainer(): Element\n\t{\n\t\treturn this.popupContainer;\n\t}\n\n\tgetContentContainer(): Element\n\t{\n\t\treturn this.contentContainer;\n\t}\n\n\tgetResizableContainer(): Element\n\t{\n\t\treturn Browser.isIE11() ? this.getContentContainer() : this.getPopupContainer();\n\t}\n\n\tgetTitleContainer(): Element\n\t{\n\t\treturn this.titleBar;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonTitleMouseDown(event: MouseEvent): void\n\t{\n\t\tthis._startDrag(\n\t\t\tevent,\n\t\t\t{\n\t\t\t\tcursor: 'move',\n\t\t\t\tcallback: this.handleMove,\n\t\t\t\teventName: 'Drag'\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleResizeMouseDown(event): void\n\t{\n\t\tthis._startDrag(\n\t\t\tevent,\n\t\t\t{\n\t\t\t\tcursor: 'nwse-resize',\n\t\t\t\teventName: 'Resize',\n\t\t\t\tcallback: this.handleResize\n\t\t\t}\n\t\t);\n\n\t\tif (this.isTargetDocumentBody())\n\t\t{\n\t\t\tthis.resizeContentPos = Dom.getPosition(this.getResizableContainer());\n\t\t\tthis.resizeContentOffset =\n\t\t\t\tthis.resizeContentPos.left - Dom.getPosition(this.getPopupContainer()).left;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.resizeContentPos = this.getPositionRelativeToTarget(this.getResizableContainer());\n\t\t\tthis.resizeContentOffset =\n\t\t\t\tthis.resizeContentPos.left - this.getPositionRelativeToTarget(this.getPopupContainer()).left;\n\t\t}\n\n\t\tthis.resizeContentPos.offsetX = 0;\n\t\tthis.resizeContentPos.offsetY = 0;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleResize(offsetX, offsetY, pageX, pageY): void\n\t{\n\t\tthis.resizeContentPos.offsetX += offsetX;\n\t\tthis.resizeContentPos.offsetY += offsetY;\n\n\t\tlet width = this.resizeContentPos.width + this.resizeContentPos.offsetX;\n\t\tlet height = this.resizeContentPos.height + this.resizeContentPos.offsetY;\n\n\t\tconst scrollWidth =\n\t\t\tthis.isTargetDocumentBody() ? document.documentElement.scrollWidth : this.getTargetContainer().scrollWidth\n\t\t;\n\n\t\tif (this.resizeContentPos.left + width + this.resizeContentOffset >= scrollWidth)\n\t\t{\n\t\t\twidth = scrollWidth - this.resizeContentPos.left - this.resizeContentOffset;\n\t\t}\n\n\t\twidth = Math.max(width, this.getMinWidth());\n\t\theight = Math.max(height, this.getMinHeight());\n\n\t\tif (this.getMaxWidth() !== null)\n\t\t{\n\t\t\twidth = Math.min(width, this.getMaxWidth());\n\t\t}\n\n\t\tif (this.getMaxHeight() !== null)\n\t\t{\n\t\t\theight = Math.min(height, this.getMaxHeight());\n\t\t}\n\n\t\tthis.setWidth(width);\n\t\tthis.setHeight(height);\n\t}\n\n\tisTopAngle(): boolean\n\t{\n\t\treturn this.angle !== null && this.angle.position === 'top';\n\t}\n\n\tisBottomAngle(): boolean\n\t{\n\t\treturn this.angle !== null && this.angle.position === 'bottom';\n\t}\n\n\tisTopOrBottomAngle(): boolean\n\t{\n\t\treturn this.angle !== null && (this.angle.position === 'top' || this.angle.position === 'bottom');\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetAngleHeight(): number\n\t{\n\t\treturn (this.isTopOrBottomAngle() ? Popup.getOption('angleTopOffset') : 0);\n\t}\n\n\tsetOffset(params: { offsetTop: number, offsetLeft: number }): void\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isNumber(params.offsetLeft))\n\t\t{\n\t\t\tthis.offsetLeft = params.offsetLeft + Popup.getOption('offsetLeft');\n\t\t}\n\n\t\tif (Type.isNumber(params.offsetTop))\n\t\t{\n\t\t\tthis.offsetTop = params.offsetTop + Popup.getOption('offsetTop');\n\t\t}\n\t}\n\n\tsetTitleBar(params: string | { content: string }): void\n\t{\n\t\tif (!this.titleBar)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof (params) === 'object' && Type.isDomNode(params.content))\n\t\t{\n\t\t\tthis.titleBar.innerHTML = '';\n\t\t\tthis.titleBar.appendChild(params.content);\n\t\t}\n\t\telse if (typeof (params) === 'string')\n\t\t{\n\t\t\tthis.titleBar.innerHTML = '';\n\t\t\tthis.titleBar.appendChild(\n\t\t\t\tDom.create('span', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'popup-window-titlebar-text'\n\t\t\t\t\t},\n\t\t\t\t\ttext: params\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (this.params.draggable)\n\t\t{\n\t\t\tthis.titleBar.style.cursor = 'move';\n\t\t\tEvent.bind(this.titleBar, 'mousedown', this.onTitleMouseDown);\n\t\t}\n\t}\n\n\tsetClosingByEsc(enable: boolean): void\n\t{\n\t\tenable = Type.isBoolean(enable) ? enable : true;\n\t\tif (enable)\n\t\t{\n\t\t\tthis.closeByEsc = true;\n\t\t\tthis.bindClosingByEsc();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.closeByEsc = false;\n\t\t\tthis.unbindClosingByEsc();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tbindClosingByEsc(): void\n\t{\n\t\tif (this.closeByEsc && !this.isCloseByEscBinded)\n\t\t{\n\t\t\tEvent.bind(document, 'keyup', this.handleDocumentKeyUp);\n\t\t\tthis.isCloseByEscBinded = true;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tunbindClosingByEsc(): void\n\t{\n\t\tif (this.isCloseByEscBinded)\n\t\t{\n\t\t\tEvent.unbind(document, 'keyup', this.handleDocumentKeyUp);\n\t\t\tthis.isCloseByEscBinded = false;\n\t\t}\n\t}\n\n\tsetAutoHide(enable: boolean): void\n\t{\n\t\tenable = Type.isBoolean(enable) ? enable : true;\n\t\tif (enable)\n\t\t{\n\t\t\tthis.autoHide = true;\n\t\t\tthis.bindAutoHide();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.autoHide = false;\n\t\t\tthis.unbindAutoHide();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tbindAutoHide(): void\n\t{\n\t\tif (this.autoHide && !this.isAutoHideBinded && this.isShown())\n\t\t{\n\t\t\tthis.isAutoHideBinded = true;\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tEvent.bind(this.getPopupContainer(), 'click', this.handleContainerClick);\n\t\t\t}\n\n\t\t\tif (this.overlay && this.overlay.element)\n\t\t\t{\n\t\t\t\tEvent.bind(this.overlay.element, 'click', this.handleOverlayClick);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.isCompatibleMode())\n\t\t\t\t{\n\t\t\t\t\tEvent.bind(document, 'click', this.handleAutoHide);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.addEventListener('click', this.handleAutoHide, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tunbindAutoHide(): void\n\t{\n\t\tif (this.isAutoHideBinded)\n\t\t{\n\t\t\tthis.isAutoHideBinded = false;\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tEvent.unbind(this.getPopupContainer(), 'click', this.handleContainerClick);\n\t\t\t}\n\n\t\t\tif (this.overlay && this.overlay.element)\n\t\t\t{\n\t\t\t\tEvent.unbind(this.overlay.element, 'click', this.handleOverlayClick);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.isCompatibleMode())\n\t\t\t\t{\n\t\t\t\t\tEvent.unbind(document, 'click', this.handleAutoHide);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.removeEventListener('click', this.handleAutoHide, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event): void\n\t{\n\t\tif (this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.autoHideHandler !== null)\n\t\t{\n\t\t\tif (this.autoHideHandler(event))\n\t\t\t{\n\t\t\t\tthis._tryCloseByEvent(event);\n\t\t\t}\n\t\t}\n\t\telse if (event.target !== this.getPopupContainer() && !this.getPopupContainer().contains(event.target))\n\t\t{\n\t\t\tthis._tryCloseByEvent(event);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_tryCloseByEvent(event): void\n\t{\n\t\tif (this.isCompatibleMode())\n\t\t{\n\t\t\tthis.tryCloseByEvent(event);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.tryCloseByEvent(event);\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\ttryCloseByEvent(event): void\n\t{\n\t\tif (event.button === 0)\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleOverlayClick(event): void\n\t{\n\t\tthis.tryCloseByEvent(event);\n\t\tevent.stopPropagation();\n\t}\n\n\tsetOverlay(params: { backgroundColor?: string, opacity?: number }): void\n\t{\n\t\tif (this.overlay === null)\n\t\t{\n\t\t\tthis.overlay = {\n\t\t\t\telement: Tag.render`\n\t\t\t\t\t<div class=\"popup-window-overlay\" id=\"popup-window-overlay-${this.getId()}\"></div>\n\t\t\t\t`\n\t\t\t};\n\n\t\t\tthis.resizeOverlay();\n\n\t\t\tthis.targetContainer.appendChild(this.overlay.element);\n\t\t\tthis.getZIndexComponent().setOverlay(this.overlay.element);\n\t\t}\n\n\t\tif (params && Type.isNumber(params.opacity) && params.opacity >= 0 && params.opacity <= 100)\n\t\t{\n\t\t\tthis.overlay.element.style.opacity = parseFloat(params.opacity / 100).toPrecision(3);\n\t\t}\n\n\t\tif (params && params.backgroundColor)\n\t\t{\n\t\t\tthis.overlay.element.style.backgroundColor = params.backgroundColor;\n\t\t}\n\t}\n\n\tremoveOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tDom.remove(this.overlay.element);\n\t\t\tthis.getZIndexComponent().setOverlay(null);\n\t\t}\n\n\t\tif (this.overlayTimeout)\n\t\t{\n\t\t\tclearInterval(this.overlayTimeout);\n\t\t\tthis.overlayTimeout = null;\n\t\t}\n\n\t\tthis.overlay = null;\n\t}\n\n\thideOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tif (this.overlayTimeout)\n\t\t\t{\n\t\t\t\tclearInterval(this.overlayTimeout);\n\t\t\t\tthis.overlayTimeout = null;\n\t\t\t}\n\n\t\t\tthis.overlay.element.style.display = 'none';\n\t\t}\n\t}\n\n\tshowOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tthis.overlay.element.style.display = 'block';\n\n\t\t\tlet popupHeight = this.getPopupContainer().offsetHeight;\n\t\t\tthis.overlayTimeout = setInterval(() => {\n\t\t\t\tif (popupHeight !== this.getPopupContainer().offsetHeight)\n\t\t\t\t{\n\t\t\t\t\tthis.resizeOverlay();\n\t\t\t\t\tpopupHeight = this.getPopupContainer().offsetHeight;\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\n\tresizeOverlay(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tlet scrollWidth;\n\t\t\tlet scrollHeight;\n\t\t\tif (this.isTargetDocumentBody())\n\t\t\t{\n\t\t\t\tscrollWidth = document.documentElement.scrollWidth;\n\t\t\t\tscrollHeight = Math.max(\n\t\t\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tscrollWidth = this.getTargetContainer().scrollWidth;\n\t\t\t\tscrollHeight = this.getTargetContainer().scrollHeight;\n\t\t\t}\n\n\t\t\tthis.overlay.element.style.width = scrollWidth + 'px';\n\t\t\tthis.overlay.element.style.height = scrollHeight + 'px';\n\t\t}\n\t}\n\n\tgetZindex(): number\n\t{\n\t\treturn this.getZIndexComponent().getZIndex();\n\t}\n\n\tgetZIndexComponent(): ZIndexComponent\n\t{\n\t\treturn this.zIndexComponent;\n\t}\n\n\tshow(): void\n\t{\n\t\tif (this.isShown() || this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.emit('onBeforeShow');\n\n\t\tthis.showOverlay();\n\t\tthis.getPopupContainer().style.display = 'block';\n\n\t\tif (this.shouldFrontOnShow())\n\t\t{\n\t\t\tthis.bringToFront();\n\t\t}\n\n\t\tif (!this.firstShow)\n\t\t{\n\t\t\tthis.emit('onFirstShow', new BaseEvent({ compatData: [this] }));\n\t\t\tthis.firstShow = true;\n\t\t}\n\n\t\tthis.emit('onShow', new BaseEvent({ compatData: [this] }));\n\n\t\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\tthis.animateClosing(() => {\n\n\t\t\tif (this.isDestroyed())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.hideOverlay();\n\n\t\t\tthis.getPopupContainer().style.display = 'none';\n\n\t\t\tDom.removeClass(this.getPopupContainer(), this.animationCloseClassName);\n\n\t\t\tthis.unbindClosingByEsc();\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.unbindAutoHide();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.unbindAutoHide();\n\t\t\t}\n\n\t\t\tthis.emit('onAfterClose', new BaseEvent({ compatData: [this] }));\n\n\t\t\tif (!this.isCacheable())\n\t\t\t{\n\t\t\t\tthis.destroy();\n\t\t\t}\n\n\t\t});\n\t}\n\n\tbringToFront(): void\n\t{\n\t\tif (this.isShown())\n\t\t{\n\t\t\tZIndexManager.bringToFront(this.getPopupContainer());\n\t\t}\n\t}\n\n\ttoggle(): void\n\t{\n\t\tthis.isShown() ? this.close() : this.show();\n\t}\n\n\t/**\n\t *\n\t * @private\n\t */\n\tanimateOpening(callback: Function): void\n\t{\n\t\tDom.removeClass(this.getPopupContainer(), this.animationCloseClassName);\n\n\t\tif (this.animationShowClassName !== null)\n\t\t{\n\t\t\tDom.addClass(this.getPopupContainer(), this.animationShowClassName);\n\n\t\t\tif (this.animationCloseEventType !== null)\n\t\t\t{\n\t\t\t\tconst eventName = this.animationCloseEventType + 'end';\n\t\t\t\tthis.getPopupContainer().addEventListener(eventName, function handleTransitionEnd() {\n\t\t\t\t\tthis.removeEventListener(eventName, handleTransitionEnd);\n\t\t\t\t\tcallback();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tanimateClosing(callback: Function): void\n\t{\n\t\tDom.removeClass(this.getPopupContainer(), this.animationShowClassName);\n\n\t\tif (this.animationCloseClassName !== null)\n\t\t{\n\t\t\tDom.addClass(this.getPopupContainer(), this.animationCloseClassName);\n\n\t\t\tif (this.animationCloseEventType !== null)\n\t\t\t{\n\t\t\t\tconst eventName = this.animationCloseEventType + 'end';\n\t\t\t\tthis.getPopupContainer().addEventListener(eventName, function handleTransitionEnd() {\n\t\t\t\t\tthis.removeEventListener(eventName, handleTransitionEnd);\n\t\t\t\t\tcallback();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcallback();\n\t\t}\n\t}\n\n\tsetAnimation(options: PopupAnimationOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tthis.animationShowClassName = Type.isStringFilled(options.showClassName) ? options.showClassName : null;\n\t\t\tthis.animationCloseClassName = Type.isStringFilled(options.closeClassName) ? options.closeClassName : null;\n\t\t\tthis.animationCloseEventType =\n\t\t\t\toptions.closeAnimationType === 'animation' || options.closeAnimationType === 'transition'\n\t\t\t\t\t? options.closeAnimationType\n\t\t\t\t\t: null\n\t\t\t;\n\t\t}\n\t\telse if (Type.isStringFilled(options))\n\t\t{\n\t\t\tconst animationName = options;\n\t\t\tif (animationName === 'fading')\n\t\t\t{\n\t\t\t\tthis.animationShowClassName = 'popup-window-show-animation-opacity';\n\t\t\t\tthis.animationCloseClassName = 'popup-window-close-animation-opacity';\n\t\t\t\tthis.animationCloseEventType = 'animation';\n\t\t\t}\n\t\t\telse if (animationName === 'fading-slide')\n\t\t\t{\n\t\t\t\tthis.animationShowClassName = 'popup-window-show-animation-opacity-transform';\n\t\t\t\tthis.animationCloseClassName = 'popup-window-close-animation-opacity';\n\t\t\t\tthis.animationCloseEventType = 'animation';\n\t\t\t}\n\t\t\telse if (animationName === 'scale')\n\t\t\t{\n\t\t\t\tthis.animationShowClassName = 'popup-window-show-animation-scale';\n\t\t\t\tthis.animationCloseClassName = 'popup-window-close-animation-opacity';\n\t\t\t\tthis.animationCloseEventType = 'animation';\n\t\t\t}\n\t\t}\n\t\telse if (options === false || options === null)\n\t\t{\n\t\t\tthis.animationShowClassName = null;\n\t\t\tthis.animationCloseClassName = null;\n\t\t\tthis.animationCloseEventType = null;\n\t\t}\n\t}\n\n\tisShown(): boolean\n\t{\n\t\treturn !this.isDestroyed() && this.getPopupContainer().style.display === 'block';\n\t}\n\n\tdestroy(): void\n\t{\n\t\tif (this.destroyed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\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))\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 = Dom.create('span', {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tclassName: 'popup-window-delimiter-text'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\thtml: this.allowHtml ? this.getText() : encodeSafe(this.getText())\n\t\t\t\t\t\t}))\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t}\n\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 = Dom.create('span', {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tclassName: 'menu-popup-item-text'\n\t\t\t\t\t\t},\n\t\t\t\t\t\thtml: this.allowHtml ? this.getText() : encodeSafe(this.getText())\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\n\t{\n\t\treturn this.text;\n\t}\n\n\tsetText(text: string)\n\t{\n\t\tif (Type.isString(text))\n\t\t{\n\t\t\tthis.text = text;\n\t\t\tthis.getTextContainer().innerHTML = text;\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\tthis.addSubMenu(this._items);\n\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tDom.addClass(this.layout.item, 'menu-popup-item-open');\n\n\t\t\tthis.closeSiblings();\n\t\t\tthis.closeChildren();\n\n\t\t\tconst popupWindow = this.subMenuWindow.getPopupWindow();\n\t\t\tif (!popupWindow.isShown())\n\t\t\t{\n\t\t\t\tthis.emit('SubMenu:onShow');\n\t\t\t\tpopupWindow.show();\n\t\t\t}\n\n\t\t\tthis.adjustSubMenu();\n\t\t}\n\t}\n\n\taddSubMenu(items: []): Menu\n\t{\n\t\tif (this.subMenuWindow !== null || !Type.isArray(items) || !items.length)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst rootMenuWindow = this.getMenuWindow().getRootMenuWindow() || this.getMenuWindow();\n\t\tconst rootOptions = Object.assign({}, rootMenuWindow.params);\n\t\tdelete rootOptions.events;\n\n\t\tconst subMenuOptions =\n\t\t\tType.isPlainObject(rootMenuWindow.params.subMenuOptions) ? rootMenuWindow.params.subMenuOptions : {}\n\t\t;\n\n\t\tconst options = Object.assign({}, rootOptions, subMenuOptions);\n\n\t\t//Override root menu options\n\t\toptions.autoHide = false;\n\t\toptions.menuShowDelay = this.menuShowDelay;\n\t\toptions.cacheable = this.isCacheable();\n\t\toptions.targetContainer = this.getMenuWindow().getPopupWindow().getTargetContainer();\n\t\toptions.bindOptions = {\n\t\t\tforceTop: true,\n\t\t\tforceLeft: true,\n\t\t\tforceBindPosition: true\n\t\t};\n\n\t\tdelete options.angle;\n\t\tdelete options.overlay;\n\n\t\tthis.subMenuWindow = new Menu('popup-submenu-' + this.id, this.layout.item, items, options);\n\t\tthis.subMenuWindow.setParentMenuWindow(this.getMenuWindow());\n\t\tthis.subMenuWindow.setParentMenuItem(this);\n\n\t\tthis.subMenuWindow.getPopupWindow().subscribe('onDestroy', this.handleSubMenuDestroy.bind(this));\n\t\tDom.addClass(this.layout.item, 'menu-popup-item-submenu');\n\n\t\treturn this.subMenuWindow;\n\t}\n\n\tcloseSubMenu(): void\n\t{\n\t\tthis.clearSubMenuTimeout();\n\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tDom.removeClass(this.layout.item, 'menu-popup-item-open');\n\n\t\t\tthis.closeChildren();\n\n\t\t\tconst popup = this.subMenuWindow.getPopupWindow();\n\t\t\tif (popup.isShown())\n\t\t\t{\n\t\t\t\tthis.emit('SubMenu:onClose');\n\t\t\t}\n\n\t\t\tthis.subMenuWindow.close();\n\t\t}\n\t}\n\n\tcloseSiblings(): void\n\t{\n\t\tconst siblings = this.menuWindow.getMenuItems();\n\t\tfor (let i = 0; i < siblings.length; i++)\n\t\t{\n\t\t\tif (siblings[i] !== this)\n\t\t\t{\n\t\t\t\tsiblings[i].closeSubMenu();\n\t\t\t}\n\t\t}\n\t}\n\n\tcloseChildren(): void\n\t{\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tconst children = this.subMenuWindow.getMenuItems();\n\t\t\tfor (let i = 0; i < children.length; i++)\n\t\t\t{\n\t\t\t\tchildren[i].closeSubMenu();\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroySubMenu(): void\n\t{\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tDom.removeClass(this.layout.item, 'menu-popup-item-open menu-popup-item-submenu');\n\t\t\tthis.destroyChildren();\n\t\t\tthis.subMenuWindow.destroy();\n\n\t\t\tthis.subMenuWindow = null;\n\t\t\tthis._items = [];\n\t\t}\n\t}\n\n\tdestroyChildren(): void\n\t{\n\t\tif (this.subMenuWindow)\n\t\t{\n\t\t\tconst children = this.subMenuWindow.getMenuItems();\n\t\t\tfor (let i = 0; i < children.length; i++)\n\t\t\t{\n\t\t\t\tchildren[i].destroySubMenu();\n\t\t\t}\n\t\t}\n\t}\n\n\tadjustSubMenu(): void\n\t{\n\t\tif (!this.subMenuWindow || !this.layout.item)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst popupWindow = this.subMenuWindow.getPopupWindow();\n\t\tconst itemRect = this.getBoundingClientRect();\n\n\t\tlet offsetLeft = itemRect.width + this.subMenuOffsetX;\n\t\tlet offsetTop = itemRect.height + this.getPopupPadding();\n\t\tlet angleOffset = itemRect.height / 2 - this.getPopupPadding();\n\t\tlet anglePosition = 'left';\n\n\t\tconst popupWidth = popupWindow.getPopupContainer().offsetWidth;\n\t\tconst popupHeight = popupWindow.getPopupContainer().offsetHeight;\n\t\tconst popupBottom = itemRect.top + popupHeight;\n\n\t\tconst targetContainer = this.getMenuWindow().getPopupWindow().getTargetContainer();\n\t\tconst isGlobalContext = this.getMenuWindow().getPopupWindow().isTargetDocumentBody();\n\t\tconst clientWidth = isGlobalContext ? document.documentElement.clientWidth : targetContainer.offsetWidth;\n\t\tconst clientHeight = isGlobalContext ? document.documentElement.clientHeight : targetContainer.offsetHeight;\n\n\t\t// let's try to fit a submenu to the browser viewport\n\t\tconst exceeded = popupBottom - clientHeight;\n\t\tif (exceeded > 0)\n\t\t{\n\t\t\tlet roundOffset = Math.ceil(exceeded / itemRect.height) * itemRect.height;\n\t\t\tif (roundOffset > itemRect.top)\n\t\t\t{\n\t\t\t\t// it cannot be higher than the browser viewport.\n\t\t\t\troundOffset -= Math.ceil((roundOffset - itemRect.top) / itemRect.height) * itemRect.height;\n\t\t\t}\n\n\t\t\tif (itemRect.bottom > (popupBottom - roundOffset))\n\t\t\t{\n\t\t\t\t// let's sync bottom boundaries.\n\t\t\t\troundOffset -= itemRect.bottom - (popupBottom - roundOffset) + this.getPopupPadding();\n\t\t\t}\n\n\t\t\toffsetTop += roundOffset;\n\t\t\tangleOffset += roundOffset;\n\t\t}\n\n\t\tif ((itemRect.left + offsetLeft + popupWidth) > clientWidth)\n\t\t{\n\t\t\tconst left = itemRect.left - popupWidth - this.subMenuOffsetX;\n\t\t\tif (left > 0)\n\t\t\t{\n\t\t\t\toffsetLeft = -popupWidth - this.subMenuOffsetX;\n\t\t\t\tanglePosition = 'right';\n\t\t\t}\n\t\t}\n\n\t\tpopupWindow.setBindElement(this.layout.item);\n\t\tpopupWindow.setOffset({ offsetLeft: offsetLeft, offsetTop: -offsetTop });\n\t\tpopupWindow.setAngle({ position: anglePosition, offset: angleOffset });\n\t\tpopupWindow.adjustPosition();\n\t}\n\n\tgetBoundingClientRect(): DOMRect\n\t{\n\t\tconst popup = this.getMenuWindow().getPopupWindow();\n\t\tif (popup.isTargetDocumentBody())\n\t\t{\n\t\t\treturn this.layout.item.getBoundingClientRect();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst rect = popup.getPositionRelativeToTarget(this.layout.item);\n\t\t\tconst targetContainer = this.getMenuWindow().getPopupWindow().getTargetContainer();\n\n\t\t\treturn new DOMRect(\n\t\t\t\trect.left - targetContainer.scrollLeft,\n\t\t\t\trect.top - targetContainer.scrollTop,\n\t\t\t\trect.width,\n\t\t\t\trect.height\n\t\t\t);\n\t\t}\n\t}\n\n\tgetPopupPadding(): number\n\t{\n\t\tif (!Type.isNumber(this.popupPadding))\n\t\t{\n\t\t\tif (this.subMenuWindow)\n\t\t\t{\n\t\t\t\tconst menuContainer = this.subMenuWindow.layout.menuContainer;\n\t\t\t\tthis.popupPadding = parseInt(Dom.style(menuContainer, 'paddingTop'), 10);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.popupPadding = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this.popupPadding;\n\t}\n\n\tgetSubMenu(): Menu | null\n\t{\n\t\treturn this.subMenuWindow;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tsetMenuWindow(menu: Menu): string\n\t{\n\t\tthis.menuWindow = menu;\n\t}\n\n\tgetMenuWindow(): Menu | null\n\t{\n\t\treturn this.menuWindow;\n\t}\n\n\tgetMenuShowDelay(): number\n\t{\n\t\treturn this.menuShowDelay;\n\t}\n\n\tenable(): void\n\t{\n\t\tthis.disabled = false;\n\t\tthis.getContainer().classList.remove('menu-popup-item-disabled');\n\t}\n\n\tdisable(): void\n\t{\n\t\tthis.disabled = true;\n\t\tthis.closeSubMenu();\n\t\tthis.getContainer().classList.add('menu-popup-item-disabled');\n\t}\n\n\tisDisabled(): boolean\n\t{\n\t\treturn this.disabled;\n\t}\n\n\tsetCacheable(cacheable): void\n\t{\n\t\tthis.cacheable = cacheable !== false;\n\t}\n\n\tisCacheable(): boolean\n\t{\n\t\treturn this.cacheable;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonItemClick(event): void\n\t{\n\t\tthis.onclick.call(this.menuWindow, event, this); //compatibility\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonItemMouseEnter(mouseEvent: MouseEvent): void\n\t{\n\t\tif (this.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { mouseEvent } });\n\t\tEventEmitter.emit(this, 'onMouseEnter', event, { thisArg: this });\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearSubMenuTimeout();\n\n\t\tif (this.hasSubMenu())\n\t\t{\n\t\t\tthis.subMenuTimeout = setTimeout(function() {\n\t\t\t\tthis.showSubMenu();\n\t\t\t}.bind(this), this.menuShowDelay);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.subMenuTimeout = setTimeout(function() {\n\t\t\t\tthis.closeSiblings();\n\t\t\t}.bind(this), this.menuShowDelay);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tonItemMouseLeave(mouseEvent: MouseEvent): void\n\t{\n\t\tif (this.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { mouseEvent } });\n\t\tEventEmitter.emit(this, 'onMouseLeave', event, { thisArg: this });\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearSubMenuTimeout();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tclearSubMenuTimeout(): void\n\t{\n\t\tif (this.subMenuTimeout)\n\t\t{\n\t\t\tclearTimeout(this.subMenuTimeout);\n\t\t}\n\n\t\tthis.subMenuTimeout = null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleSubMenuDestroy(): void\n\t{\n\t\tthis.subMenuWindow = null;\n\t}\n}","import MenuItem from './menu-item';\nimport Popup from '../popup/popup';\nimport { Type, Text, Tag } from 'main.core';\nimport { type MenuOptions, type MenuItemOptions } from './menu-types';\nimport { type PopupTargetOptions } from '../popup/popup-types';\n\n/**\n * @memberof BX.Main\n */\nexport default class Menu\n{\n\tconstructor(options: MenuOptions)\n\t{\n\t\tlet [\n\t\t\tid: string,\n\t\t\tbindElement: PopupTargetOptions,\n\t\t\tmenuItems: MenuItemOptions[],\n\t\t\tparams: MenuOptions\n\t\t] = arguments;\n\n\t\tif (Type.isPlainObject(options) && !bindElement && !menuItems && !params)\n\t\t{\n\t\t\tparams = options;\n\t\t\tparams.compatibleMode = false;\n\n\t\t\tid = options.id;\n\t\t\tbindElement = options.bindElement;\n\t\t\tmenuItems = options.items;\n\n\t\t\tif (!Type.isStringFilled(id))\n\t\t\t{\n\t\t\t\tid = 'menu-popup-' + Text.getRandom();\n\t\t\t}\n\t\t}\n\n\t\tthis.id = id;\n\t\tthis.bindElement = bindElement;\n\n\t\t/**\n\t\t *\n\t\t * @type {MenuItem[]}\n\t\t */\n\t\tthis.menuItems = [];\n\t\tthis.itemsContainer = null;\n\t\tthis.params = params && typeof (params) === 'object' ? params : {};\n\t\tthis.parentMenuWindow = null;\n\t\tthis.parentMenuItem = null;\n\n\t\tif (menuItems && Type.isArray(menuItems))\n\t\t{\n\t\t\tfor (let i = 0; i < menuItems.length; i++)\n\t\t\t{\n\t\t\t\tthis.addMenuItemInternal(menuItems[i], null);\n\t\t\t}\n\t\t}\n\n\t\tthis.layout = {\n\t\t\tmenuContainer: null,\n\t\t\titemsContainer: null\n\t\t};\n\n\t\tthis.popupWindow = this.__createPopup();\n\t}\n\n\t/**\n\t * @private\n\t */\n\t__createPopup(): Popup\n\t{\n\t\tconst domItems = [];\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\tconst itemLayout = item.getLayout();\n\t\t\tdomItems.push(itemLayout.item);\n\t\t}\n\n\t\tconst defaults = {\n\t\t\tcloseByEsc: false,\n\t\t\tangle: false,\n\t\t\tautoHide: true,\n\t\t\toffsetTop: 1,\n\t\t\toffsetLeft: 0,\n\t\t\tanimation: 'fading'\n\t\t};\n\n\t\tconst options = Object.assign(defaults, this.params);\n\n\t\t//Override user params\n\t\toptions.noAllPaddings = true;\n\t\toptions.darkMode = false;\n\t\toptions.autoHideHandler = this.handleAutoHide.bind(this);\n\n\t\tthis.layout.itemsContainer = Tag.render`\n\t\t\t<div class=\"menu-popup-items\">${domItems}</div>\n\t\t`;\n\n\t\tthis.layout.menuContainer = Tag.render`\n\t\t\t<div class=\"menu-popup\">${this.layout.itemsContainer}</div>\n\t\t`;\n\n\t\tthis.itemsContainer = this.layout.itemsContainer;\n\t\toptions.content = this.layout.menuContainer;\n\n\t\t//Make internal event handlers first in the queue.\n\t\toptions.events = {\n\t\t\tonClose: this.handlePopupClose.bind(this),\n\t\t\tonDestroy: this.handlePopupDestroy.bind(this)\n\t\t};\n\n\t\tconst id = options.compatibleMode === false ? this.getId() : 'menu-popup-' + this.getId();\n\t\tconst popup = new Popup(id, this.bindElement, options);\n\t\tif (this.params && this.params.events)\n\t\t{\n\t\t\tpopup.subscribeFromOptions(this.params.events);\n\t\t}\n\n\t\treturn popup;\n\t}\n\n\tgetPopupWindow(): Popup\n\t{\n\t\treturn this.popupWindow;\n\t}\n\n\tshow(): void\n\t{\n\t\tthis.getPopupWindow().show();\n\t}\n\n\tclose(): void\n\t{\n\t\tthis.getPopupWindow().close();\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.getPopupWindow().destroy();\n\t}\n\n\ttoggle(): void\n\t{\n\t\tif (this.getPopupWindow().isShown())\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupClose(): void\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\titem.closeSubMenu();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupDestroy(): void\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\titem.destroySubMenu();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event): boolean\n\t{\n\t\treturn !this.containsTarget(event.target);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tcontainsTarget(target: Element): boolean\n\t{\n\t\tconst el = this.getPopupWindow().getPopupContainer();\n\t\tif (this.getPopupWindow().isShown() && (target === el || el.contains(target)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.getMenuItems().some(function(item: MenuItem) {\n\n\t\t\treturn item.getSubMenu() && item.getSubMenu().containsTarget(target);\n\n\t\t});\n\t}\n\n\tsetParentMenuWindow(parentMenu: Menu): void\n\t{\n\t\tif (parentMenu instanceof Menu)\n\t\t{\n\t\t\tthis.parentMenuWindow = parentMenu;\n\t\t}\n\t}\n\n\tgetParentMenuWindow(): Menu | null\n\t{\n\t\treturn this.parentMenuWindow;\n\t}\n\n\tgetRootMenuWindow(): Menu | null\n\t{\n\t\tlet root = null;\n\t\tlet parent = this.getParentMenuWindow();\n\t\twhile (parent !== null)\n\t\t{\n\t\t\troot = parent;\n\t\t\tparent = parent.getParentMenuWindow();\n\t\t}\n\n\t\treturn root;\n\t}\n\n\tsetParentMenuItem(parentItem: MenuItem): void\n\t{\n\t\tif (parentItem instanceof MenuItem)\n\t\t{\n\t\t\tthis.parentMenuItem = parentItem;\n\t\t}\n\t}\n\n\tgetParentMenuItem(): MenuItem | null\n\t{\n\t\treturn this.parentMenuItem;\n\t}\n\n\taddMenuItem(menuItemJson: any, targetItemId: string): MenuItem\n\t{\n\t\tconst menuItem = this.addMenuItemInternal(menuItemJson, targetItemId);\n\t\tif (!menuItem)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst itemLayout = menuItem.getLayout();\n\t\tconst targetItem = this.getMenuItem(targetItemId);\n\t\tif (targetItem !== null)\n\t\t{\n\t\t\tconst targetLayout = targetItem.getLayout();\n\t\t\tthis.itemsContainer.insertBefore(itemLayout.item, targetLayout.item);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.itemsContainer.appendChild(itemLayout.item);\n\t\t}\n\n\t\treturn menuItem;\n\t}\n\n\t/**\n\t * @private\n\t */\n\taddMenuItemInternal(menuItemJson: any, targetItemId: string): MenuItem\n\t{\n\t\tif (\n\t\t\t!menuItemJson ||\n\t\t\t(\n\t\t\t\t!menuItemJson.delimiter &&\n\t\t\t\t!Type.isStringFilled(menuItemJson.text) &&\n\t\t\t\t!Type.isStringFilled(menuItemJson.html)\n\t\t\t) ||\n\t\t\t(menuItemJson.id && this.getMenuItem(menuItemJson.id) !== null)\n\t\t)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (Type.isNumber(this.params.menuShowDelay))\n\t\t{\n\t\t\tmenuItemJson.menuShowDelay = this.params.menuShowDelay;\n\t\t}\n\n\t\tconst menuItem = new MenuItem(menuItemJson);\n\t\tmenuItem.setMenuWindow(this);\n\n\t\tconst position = this.getMenuItemPosition(targetItemId);\n\t\tif (position >= 0)\n\t\t{\n\t\t\tthis.menuItems.splice(position, 0, menuItem);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.menuItems.push(menuItem);\n\t\t}\n\n\t\treturn menuItem;\n\t}\n\n\tremoveMenuItem(itemId: string): void\n\t{\n\t\tconst item = this.getMenuItem(itemId);\n\t\tif (!item)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let position = 0; position < this.menuItems.length; position++)\n\t\t{\n\t\t\tif (this.menuItems[position] === item)\n\t\t\t{\n\t\t\t\titem.destroySubMenu();\n\t\t\t\tthis.menuItems.splice(position, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.menuItems.length)\n\t\t{\n\t\t\tconst menuWindow = item.getMenuWindow();\n\t\t\tif (menuWindow)\n\t\t\t{\n\t\t\t\tconst parentMenuItem = menuWindow.getParentMenuItem();\n\t\t\t\tif (parentMenuItem)\n\t\t\t\t{\n\t\t\t\t\tparentMenuItem.destroySubMenu();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tmenuWindow.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\titem.layout.item.parentNode.removeChild(item.layout.item);\n\t\titem.layout = {\n\t\t\titem: null,\n\t\t\ttext: null\n\t\t};\n\t}\n\n\tgetMenuItem(itemId: string): MenuItem | null\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tif (this.menuItems[i].id && this.menuItems[i].id === itemId)\n\t\t\t{\n\t\t\t\treturn this.menuItems[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn this.menuItems;\n\t}\n\n\tgetMenuItemPosition(itemId: string): number\n\t{\n\t\tif (itemId)\n\t\t{\n\t\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t\t{\n\t\t\t\tif (this.menuItems[i].id && this.menuItems[i].id === itemId)\n\t\t\t\t{\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\n\tgetMenuContainer()\n\t{\n\t\treturn this.getPopupWindow().getPopupContainer();\n\t}\n}","import Menu from './menu';\nimport { Type } from 'main.core';\nimport { MenuOptions } from './menu-types';\n\nexport default class MenuManager\n{\n\t/**\n\t * @private\n\t */\n\tstatic Data: { [id: string]: Menu } = {};\n\n\t/**\n\t * @private\n\t */\n\tstatic currentItem: ? Menu = null;\n\n\tconstructor()\n\t{\n\t\tthrow new Error('You cannot make an instance of MenuManager.');\n\t}\n\n\tstatic show(...args)\n\t{\n\t\tif (this.currentItem !== null)\n\t\t{\n\t\t\tthis.currentItem.popupWindow.close();\n\t\t}\n\n\t\tthis.currentItem = this.create.apply(this, args);\n\t\tthis.currentItem.popupWindow.show();\n\t}\n\n\tstatic create(options: MenuOptions)\n\t{\n\t\tlet menuId = null;\n\n\t\t//Compatibility\n\t\tconst bindElement = arguments[1];\n\t\tconst menuItems = arguments[2];\n\t\tconst params = arguments[3];\n\n\t\tif (Type.isPlainObject(options) && !bindElement && !menuItems && !params)\n\t\t{\n\t\t\tmenuId = options.id;\n\t\t\tif (!Type.isStringFilled(menuId))\n\t\t\t{\n\t\t\t\tthrow new Error('BX.Main.Menu.create: \"id\" parameter is required.');\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmenuId = options;\n\t\t}\n\n\t\tif (!this.Data[menuId])\n\t\t{\n\t\t\tconst menu = new Menu(options, bindElement, menuItems, params);\n\t\t\tmenu.getPopupWindow().subscribe('onDestroy', () => {\n\t\t\t\tMenuManager.destroy(menuId);\n\t\t\t});\n\n\t\t\tthis.Data[menuId] = menu;\n\t\t}\n\n\t\treturn this.Data[menuId];\n\t}\n\n\tstatic getCurrentMenu(): Menu | null\n\t{\n\t\treturn this.currentItem;\n\t}\n\n\tstatic getMenuById(id): Menu | null\n\t{\n\t\treturn this.Data[id] ? this.Data[id] : null;\n\t}\n\n\t/**\n\t * compatibility\n\t * @private\n\t */\n\tstatic onPopupDestroy(popupMenuWindow: Menu)\n\t{\n\t\tthis.destroy(popupMenuWindow.id);\n\t}\n\n\tstatic destroy(id)\n\t{\n\t\tconst menu = this.getMenuById(id);\n\t\tif (menu)\n\t\t{\n\t\t\tif (this.currentItem === menu)\n\t\t\t{\n\t\t\t\tthis.currentItem = null;\n\t\t\t}\n\n\t\t\tdelete this.Data[id];\n\t\t\tmenu.getPopupWindow().destroy();\n\t\t}\n\t}\n}","import Popup from '../popup/popup';\n\n/**\n * @deprecated use Popup class instead: import { Popup } from 'main.popup'\n */\nexport default class PopupWindow extends Popup\n{\n\n}","import Button from './button';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class PopupWindowButton extends Button\n{\n\n}","import Button from './button';\nimport { Dom } from 'main.core';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class ButtonLink extends Button\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\n\t\tthis.buttonNode = Dom.create(\n\t\t\t'span',\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'popup-window-button popup-window-button-link' +\n\t\t\t\t\t\t(this.className.length > 0 ? ' ' + this.className : '')\n\t\t\t\t\t,\n\t\t\t\t\tid: this.id\n\t\t\t\t},\n\t\t\t\ttext: this.text,\n\t\t\t\tevents: this.contextEvents\n\t\t\t}\n\t\t);\n\t}\n}","import ButtonLink from './buttonlink';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class PopupWindowButtonLink extends ButtonLink\n{\n\n}","import Button from './button';\nimport { Dom } from 'main.core';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class CustomButton extends Button\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\n\t\tthis.buttonNode = Dom.create(\n\t\t\t'span',\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: (this.className.length > 0 ? this.className : ''),\n\t\t\t\t\tid: this.id\n\t\t\t\t},\n\t\t\t\tevents: this.contextEvents,\n\t\t\t\ttext: this.text\n\t\t\t}\n\t\t);\n\t}\n}","import CustomButton from './custombutton';\n\n/**\n * @deprecated use BX.UI.Button\n */\nexport default class PopupWindowCustomButton extends CustomButton\n{\n\n}","import Menu from '../menu/menu';\n\n/**\n * @deprecated use Menu class instead: import { Menu } from 'main.popup'\n */\nexport default class PopupMenuWindow extends Menu\n{\n\n}","import MenuItem from '../menu/menu-item';\n\n/**\n * @deprecated use Menu.Item class instead: import { MenuItem } from 'main.popup'\n */\nexport default class PopupMenuItem extends MenuItem\n{\n\n}","import { Dom } from 'main.core';\nimport Popup from '../popup/popup';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\n\n/**\n * @deprecated\n */\nexport default class InputPopup\n{\n\tconstructor(params)\n\t{\n\t\tthis.id = params.id || 'bx-inp-popup-' + Math.round(Math.random() * 1000000);\n\t\tthis.handler = params.handler || false;\n\t\tthis.values = params.values || false;\n\t\tthis.pInput = params.input;\n\t\tthis.bValues = !!this.values;\n\t\tthis.defaultValue = params.defaultValue || '';\n\t\tthis.openTitle = params.openTitle || '';\n\t\tthis.className = params.className || '';\n\t\tthis.noMRclassName = params.noMRclassName || 'ec-no-rm';\n\t\tthis.emptyClassName = params.noMRclassName || 'ec-label';\n\n\t\tconst _this = this;\n\t\tthis.curInd = false;\n\n\t\tif (this.bValues)\n\t\t{\n\t\t\tthis.pInput.onfocus = this.pInput.onclick = function(e) {\n\t\t\t\tif (this.value == _this.defaultValue)\n\t\t\t\t{\n\t\t\t\t\tthis.value = '';\n\t\t\t\t\tthis.className = _this.className;\n\t\t\t\t}\n\t\t\t\t_this.ShowPopup();\n\t\t\t\treturn e.preventDefault();\n\t\t\t};\n\n\t\t\tthis.pInput.onblur = function() {\n\t\t\t\tif (_this.bShowed)\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t_this.ClosePopup(true);\n\t\t\t\t\t}, 200);\n\t\t\t\t}\n\t\t\t\t_this.OnChange();\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.pInput.className = this.noMRclassName;\n\t\t\tthis.pInput.onblur = this.OnChange.bind(this);\n\t\t}\n\t}\n\n\tShowPopup()\n\t{\n\t\tif (this.bShowed)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst _this = this;\n\t\tif (!this.oPopup)\n\t\t{\n\t\t\tconst pWnd = Dom.create('DIV', { props: { className: 'bxecpl-loc-popup ' + this.className } });\n\n\t\t\tfor (let i = 0, l = this.values.length; i < l; i++)\n\t\t\t{\n\t\t\t\tconst pRow = pWnd.appendChild(Dom.create('DIV', {\n\t\t\t\t\tprops: { id: 'bxecmr_' + i },\n\t\t\t\t\ttext: this.values[i].NAME,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tmouseover: function() {\n\t\t\t\t\t\t\tDom.addClass(this, 'bxecplloc-over');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmouseout: function() {\n\t\t\t\t\t\t\tDom.removeClass(this, 'bxecplloc-over');\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tconst ind = this.id.substr('bxecmr_'.length);\n\t\t\t\t\t\t\t_this.pInput.value = _this.values[ind].NAME;\n\t\t\t\t\t\t\t_this.curInd = ind;\n\t\t\t\t\t\t\t_this.OnChange();\n\t\t\t\t\t\t\t_this.ClosePopup(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tif (this.values[i].DESCRIPTION)\n\t\t\t\t{\n\t\t\t\t\tpRow.title = this.values[i].DESCRIPTION;\n\t\t\t\t}\n\t\t\t\tif (this.values[i].CLASS_NAME)\n\t\t\t\t{\n\t\t\t\t\tDom.addClass(pRow, this.values[i].CLASS_NAME);\n\t\t\t\t}\n\n\t\t\t\tif (this.values[i].URL)\n\t\t\t\t{\n\t\t\t\t\tpRow.appendChild(Dom.create('a', {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\thref: this.values[i].URL,\n\t\t\t\t\t\t\tclassName: 'bxecplloc-view',\n\t\t\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\t\t\ttitle: this.openTitle\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oPopup = new Popup(this.id, this.pInput, {\n\t\t\t\tautoHide: true,\n\t\t\t\toffsetTop: 1,\n\t\t\t\toffsetLeft: 0,\n\t\t\t\tlightShadow: true,\n\t\t\t\tcloseByEsc: true,\n\t\t\t\tcontent: pWnd,\n\t\t\t\tevents: {\n\t\t\t\t\tonClose: this.ClosePopup.bind(this)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.oPopup.show();\n\t\tthis.pInput.select();\n\t\tthis.bShowed = true;\n\n\t\tEventEmitter.emit(this, 'onInputPopupShow', new BaseEvent({ compatData: [this] }));\n\t}\n\n\tClosePopup(bClosePopup)\n\t{\n\t\tthis.bShowed = false;\n\n\t\tif (this.pInput.value === '')\n\t\t{\n\t\t\tthis.OnChange();\n\t\t}\n\n\t\tEventEmitter.emit(this, 'onInputPopupClose', new BaseEvent({ compatData: [this] }));\n\n\t\tif (bClosePopup === true)\n\t\t{\n\t\t\tthis.oPopup.close();\n\t\t}\n\t}\n\n\tOnChange()\n\t{\n\t\tlet val = this.pInput.value;\n\t\tif (this.bValues)\n\t\t{\n\t\t\tif (this.pInput.value == '' || this.pInput.value == this.defaultValue)\n\t\t\t{\n\t\t\t\tthis.pInput.value = this.defaultValue;\n\t\t\t\tthis.pInput.className = this.emptyClassName;\n\t\t\t\tval = '';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.pInput.className = '';\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(parseInt(this.curInd)) || this.curInd !== false && val != this.values[this.curInd].NAME)\n\t\t{\n\t\t\tthis.curInd = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.curInd = parseInt(this.curInd);\n\t\t}\n\n\t\tEventEmitter.emit(\n\t\t\tthis,\n\t\t\t'onInputPopupChanged',\n\t\t\tnew BaseEvent({ compatData: [this, this.curInd, val] })\n\t\t);\n\n\t\tif (this.handler && typeof this.handler == 'function')\n\t\t{\n\t\t\tthis.handler({ ind: this.curInd, value: val });\n\t\t}\n\t}\n\n\tSet(ind, val, bOnChange)\n\t{\n\t\tthis.curInd = ind;\n\t\tif (this.curInd !== false)\n\t\t{\n\t\t\tthis.pInput.value = this.values[this.curInd].NAME;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.pInput.value = val;\n\t\t}\n\n\t\tif (bOnChange !== false)\n\t\t{\n\t\t\tthis.OnChange();\n\t\t}\n\t}\n\n\tGet(ind)\n\t{\n\t\tlet id = false;\n\t\tif (typeof ind == 'undefined')\n\t\t{\n\t\t\tind = this.curInd;\n\t\t}\n\n\t\tif (ind !== false && this.values[ind])\n\t\t{\n\t\t\tid = this.values[ind].ID;\n\t\t}\n\n\t\treturn id;\n\t}\n\n\tGetIndex(id)\n\t{\n\t\tfor (let i = 0, l = this.values.length; i < l; i++)\n\t\t{\n\t\t\tif (this.values[i].ID == id)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tDeactivate(bDeactivate)\n\t{\n\t\tif (this.pInput.value == '' || this.pInput.value == this.defaultValue)\n\t\t{\n\t\t\tif (bDeactivate)\n\t\t\t{\n\t\t\t\tthis.pInput.value = '';\n\t\t\t\tthis.pInput.className = this.noMRclassName;\n\t\t\t}\n\t\t\telse if (this.oEC.bUseMR)\n\t\t\t{\n\t\t\t\tthis.pInput.value = this.defaultValue;\n\t\t\t\tthis.pInput.className = this.emptyClassName;\n\t\t\t}\n\t\t}\n\n\t\tthis.pInput.disabled = bDeactivate;\n\t}\n}","/*\n\n//ES6\nimport { Popup, PopupManager } from 'main.popup';\nconst popup = new Popup();\nPopupManager.create();\n\n//ES5\nvar popup = new BX.Main.Popup();\nBX.Main.PopupManager.create();\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 Menu from './menu/menu';\nimport MenuManager from './menu/menu-manager';\nimport MenuItem from './menu/menu-item';\nimport { type PopupOptions } from './popup/popup-types';\nimport { type MenuOptions, type MenuItemOptions } from './menu/menu-types';\nimport type PositionEvent from './popup/position-event';\n\nimport PopupWindow from './compatibility/popup-window';\nimport PopupWindowButton from './compatibility/popup-window-button';\nimport PopupWindowButtonLink from './compatibility/popup-window-button-link';\nimport PopupWindowCustomButton from './compatibility/popup-window-custom-button';\nimport PopupMenuWindow from './compatibility/popup-menu-window';\nimport PopupMenuItem from './compatibility/popup-menu-item';\nimport InputPopup from './compatibility/input-popup';\nimport Button from './compatibility/button';\nimport ButtonLink from './compatibility/buttonlink';\nimport CustomButton from './compatibility/custombutton';\n\nimport { Reflection } from 'main.core';\n\nimport 'ui.fonts.opensans';\nimport './css/popup.css';\n\nexport {\n\tPopup,\n\tMenu,\n\tMenuItem,\n\tPopupManager,\n\tMenuManager\n};\n\nexport type {\n\tPopupOptions,\n\tMenuOptions,\n\tMenuItemOptions,\n\tPositionEvent,\n};\n\n//Compatibility\nexport {\n\tPopupWindow,\n\tPopupMenuWindow,\n\tPopupMenuItem,\n\tPopupManager as PopupWindowManager,\n\tMenuManager as PopupMenu,\n\tPopupWindowButton,\n\tPopupWindowButtonLink,\n\tPopupWindowCustomButton\n};\n\nconst BX = Reflection.namespace('BX');\n\n/** @deprecated use BX.Main.Popup or import { Popup } from 'main.popup' */\nBX.PopupWindow = Popup;\n\n/** @deprecated use BX.Main.PopupManager or import { PopupManager } from 'main.popup' */\nBX.PopupWindowManager = PopupManager;\n\n/** @deprecated use BX.Main.Menu or import { Menu } from 'main.popup' */\nBX.PopupMenuWindow = Menu;\n\n/** @deprecated use BX.Main.MenuManager or import { MenuManager } from 'main.popup' */\nBX.PopupMenu = MenuManager;\n\n/** @deprecated use BX.Main.MenuItem or import { MenuItem } from 'main.popup' */\nBX.PopupMenuItem = MenuItem;\n\n/** @deprecated use BX.UI.Button */\nBX.PopupWindowButton = Button;\n\n/** @deprecated use BX.UI.Button */\nBX.PopupWindowButtonLink = ButtonLink;\n\n/** @deprecated use BX.UI.Button */\nBX.PopupWindowCustomButton = CustomButton;\n\n/** @deprecated use another API */\nwindow.BXInputPopup = InputPopup;"],"names":["Button","params","popupWindow","text","id","className","events","contextEvents","eventName","Type","isFunction","bind","buttonNode","Dom","create","props","length","name","clean","adjust","isString","removeClass","addClass","PositionEvent","value","isNumber","BaseEvent","aliases","onPopupWindowInit","namespace","onPopupWindowIsInitialized","onPopupFirstShow","onPopupShow","onAfterPopupShow","onPopupClose","onPopupAfterClose","onPopupDestroy","onPopupFullscreenLeave","onPopupFullscreenEnter","onPopupDragStart","onPopupDrag","onPopupDragEnd","onPopupResizeStart","onPopupResize","onPopupResizeEnd","EventEmitter","registerAliases","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","autoHideHandler","handleAutoHide","handleOverlayClick","isAutoHideBinded","closeByEsc","isCloseByEscBinded","toFrontOnShow","cacheable","destroyed","width","height","minWidth","minHeight","maxWidth","maxHeight","padding","contentPadding","background","contentBackground","targetContainer","isElementNode","document","body","dragOptions","cursor","callback","dragged","dragPageX","dragPageY","animationShowClassName","animationCloseClassName","animationCloseEventType","handleDocumentMouseMove","handleDocumentMouseUp","handleDocumentKeyUp","handleResizeWindow","handleResize","handleMove","onTitleMouseDown","handleFullScreen","subscribeFromOptions","popupClassName","darkMode","Tag","render","handleCloseIconClick","style","contentContainer","popupContainer","appendChild","zIndexComponent","ZIndexManager","register","zIndexOptions","buttonsContainer","contentColor","setContentColor","setAngle","setOverlay","setOffset","setBindElement","setTitleBar","setContent","content","setButtons","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setResizeMode","resizable","setPadding","setContentPadding","setBackground","setContentBackground","setAnimation","animation","setCacheable","setToFrontOnShow","contentNoPaddings","noAllPaddings","bindOnResize","Event","window","hasParent","isDomNode","parentNode","isCompatibleMode","display","innerHTML","remove","ButtonClass","Reflection","getClass","newButtons","i","button","push","setContext","getId","top","left","clientX","clientY","pageX","pageY","bottom","isTargetDocumentBody","getPosition","getPositionRelativeToTarget","windowSize","getWindowSize","windowScroll","getWindowScroll","popupWidth","getPopupContainer","offsetWidth","popupHeight","offsetHeight","forceTop","innerWidth","scrollLeft","innerHeight","scrollTop","element","offsetElement","offsetParent","getTargetContainer","elementRect","getBoundingClientRect","DOMRect","pageXOffset","pageYOffset","position","angleMinLeft","defaultOffset","offset","angleLeftOffset","Math","max","includes","minOffset","maxOffset","min","marginLeft","removeProperty","setWidthProperty","setHeightProperty","property","indexOf","getResizableContainer","getContentContainer","overflowX","classList","add","getTitleContainer","Browser","isIE11","toKebabCase","hasOtherProps","some","prop","getPropertyValue","overflowY","color","backgroundColor","flag","mode","handleResizeMouseDown","event","_startDrag","resizeContentPos","resizeContentOffset","offsetX","offsetY","scrollWidth","documentElement","getMinWidth","getMinHeight","getMaxWidth","getMaxHeight","isTopOrBottomAngle","draggable","enable","bindClosingByEsc","unbindClosingByEsc","unbind","bindAutoHide","unbindAutoHide","isShown","handleContainerClick","addEventListener","removeEventListener","isDestroyed","_tryCloseByEvent","target","contains","tryCloseByEvent","setTimeout","close","stopPropagation","resizeOverlay","getZIndexComponent","opacity","parseFloat","toPrecision","overlayTimeout","clearInterval","setInterval","scrollHeight","clientHeight","getZIndex","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","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","disable","onItemMouseEnter","onItemMouseLeave","getTextContainer","addSubMenu","closeSiblings","closeChildren","getPopupWindow","adjustSubMenu","rootMenuWindow","getMenuWindow","getRootMenuWindow","rootOptions","Object","assign","subMenuOptions","Menu","setParentMenuWindow","setParentMenuItem","handleSubMenuDestroy","clearSubMenuTimeout","siblings","getMenuItems","closeSubMenu","destroyChildren","destroySubMenu","itemRect","getPopupPadding","angleOffset","anglePosition","popupBottom","isGlobalContext","clientWidth","exceeded","roundOffset","ceil","rect","popupPadding","menuContainer","menu","getContainer","call","mouseEvent","data","thisArg","isDefaultPrevented","subMenuTimeout","showSubMenu","clearTimeout","menuItems","itemsContainer","parentMenuWindow","parentMenuItem","addMenuItemInternal","__createPopup","domItems","itemLayout","defaults","onClose","onDestroy","containsTarget","el","getSubMenu","parentMenu","root","parent","getParentMenuWindow","parentItem","menuItemJson","targetItemId","menuItem","targetItem","getMenuItem","targetLayout","insertBefore","setMenuWindow","getMenuItemPosition","splice","itemId","getParentMenuItem","removeChild","MenuManager","currentItem","args","apply","menuId","Data","popupMenuWindow","getMenuById","PopupWindow","PopupWindowButton","ButtonLink","PopupWindowButtonLink","CustomButton","PopupWindowCustomButton","PopupMenuWindow","PopupMenuItem","InputPopup","round","random","handler","values","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