{"version":3,"file":"main.popup.bundle.js","sources":["../src/compatibility/button.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 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';\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.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\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.appendContainer = 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.contentColor && Type.isStringFilled(params.contentColor))\n\t\t{\n\t\t\tpopupClassName += ' popup-window-content-' + params.contentColor;\n\t\t}\n\n\t\tif (params.titleBar)\n\t\t{\n\t\t\tpopupClassName += ' popup-window-with-titlebar';\n\t\t}\n\n\t\tif (params.className && Type.isStringFilled(params.className))\n\t\t{\n\t\t\tpopupClassName += ' ' + params.className;\n\t\t}\n\n\t\tif (params.darkMode)\n\t\t{\n\t\t\tpopupClassName += ' popup-window-dark';\n\t\t}\n\n\t\tif (params.titleBar)\n\t\t{\n\t\t\tthis.titleBar = Tag.render`\n\t\t\t\t
\n\t\t\t`;\n\t\t}\n\n\t\tif (params.closeIcon)\n\t\t{\n\t\t\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\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`
`\n\t\t;\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tthis.popupContainer = Tag.render\n\t\t\t`
${[this.titleBar, this.contentContainer, this.closeIcon]}
`\n\t\t;\n\n\t\tthis.appendContainer.appendChild(this.popupContainer);\n\n\t\tthis.buttonsContainer = null;\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\n\t\t// Compatibility\n\t\tif (params.contentNoPaddings)\n\t\t{\n\t\t\tthis.setContentPadding(0);\n\t\t}\n\t\tif (params.noAllPaddings)\n\t\t{\n\t\t\tthis.setPadding(0);\n\t\t\tthis.setContentPadding(0);\n\t\t}\n\n\t\tif (params.bindOnResize !== false)\n\t\t{\n\t\t\tEvent.bind(window, 'resize', this.handleResizeWindow);\n\t\t}\n\n\t\tthis.emit('onAfterInit', new BaseEvent({ compatData: [popupId, this] }));\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsubscribeFromOptions(events): void\n\t{\n\t\tsuper.subscribeFromOptions(events, aliases);\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.uniquePopupId;\n\t}\n\n\tisCompatibleMode(): boolean\n\t{\n\t\treturn this.compatibleMode;\n\t}\n\n\tsetContent(content: string | Element | Node)\n\t{\n\t\tif (!this.contentContainer || !content)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isElementNode(content))\n\t\t{\n\t\t\tDom.clean(this.contentContainer);\n\n\t\t\tconst hasParent = Type.isDomNode(content.parentNode);\n\t\t\tthis.contentContainer.appendChild(content);\n\t\t\tif (this.isCompatibleMode() || hasParent)\n\t\t\t{\n\t\t\t\tcontent.style.display = 'block';\n\t\t\t}\n\t\t}\n\t\telse if (Type.isString(content))\n\t\t{\n\t\t\tthis.contentContainer.innerHTML = content;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.contentContainer.innerHTML = ' ';\n\t\t}\n\t}\n\n\tsetButtons(buttons: [])\n\t{\n\t\tthis.buttons = buttons && Type.isArray(buttons) ? buttons : [];\n\n\t\tif (this.buttonsContainer)\n\t\t{\n\t\t\tDom.remove(this.buttonsContainer);\n\t\t}\n\n\t\tconst ButtonClass = Reflection.getClass('BX.UI.Button');\n\t\tif (this.buttons.length > 0 && this.contentContainer)\n\t\t{\n\t\t\tconst newButtons = [];\n\t\t\tfor (let i = 0; i < this.buttons.length; i++)\n\t\t\t{\n\t\t\t\tconst button = this.buttons[i];\n\t\t\t\tif (button instanceof Button)\n\t\t\t\t{\n\t\t\t\t\tbutton.popupWindow = this;\n\t\t\t\t\tnewButtons.push(button.render());\n\t\t\t\t}\n\t\t\t\telse if (ButtonClass && (button instanceof ButtonClass))\n\t\t\t\t{\n\t\t\t\t\tbutton.setContext(this);\n\t\t\t\t\tnewButtons.push(button.render());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.buttonsContainer = this.contentContainer.parentNode.appendChild(\n\t\t\t\tTag.render`
${newButtons}
`\n\t\t\t);\n\t\t}\n\t}\n\n\tgetButtons(): []\n\t{\n\t\treturn this.buttons;\n\t}\n\n\tgetButton(id: string)\n\t{\n\t\tfor (let i = 0; i < this.buttons.length; i++)\n\t\t{\n\t\t\tconst button = this.buttons[i];\n\t\t\tif (button.getId() === id)\n\t\t\t{\n\t\t\t\treturn button;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tsetBindElement(bindElement: Element | { left: number, top: number } | null | MouseEvent)\n\t{\n\t\tif (bindElement === null)\n\t\t{\n\t\t\tthis.bindElement = null;\n\t\t}\n\t\telse if (typeof (bindElement) === 'object')\n\t\t{\n\t\t\tif (Type.isDomNode(bindElement) || (Type.isNumber(bindElement.top) && Type.isNumber(bindElement.left)))\n\t\t\t{\n\t\t\t\tthis.bindElement = bindElement;\n\t\t\t}\n\t\t\telse if (Type.isNumber(bindElement.clientX) && Type.isNumber(bindElement.clientY))\n\t\t\t{\n\t\t\t\tthis.bindElement = { left: bindElement.pageX, top: bindElement.pageY, bottom: bindElement.pageY };\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetBindElementPos(bindElement: Element | any): TargetPosition\n\t{\n\t\tif (Type.isDomNode(bindElement))\n\t\t{\n\t\t\treturn Dom.getPosition(bindElement);\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 = { innerWidth: window.innerWidth, innerHeight: window.innerHeight };\n\t\t\tconst windowScroll = { scrollLeft: window.pageXOffset, scrollTop: window.pageYOffset };\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\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\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.angle = {\n\t\t\t\telement: Tag.render`
`,\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\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\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\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\tsetResizeMode(mode: boolean): void\n\t{\n\t\tif (mode === true || Type.isPlainObject(mode))\n\t\t{\n\t\t\tif (!this.resizeIcon)\n\t\t\t{\n\t\t\t\tthis.resizeIcon = Tag.render`\n\t\t\t\t\t
\n\t\t\t\t`;\n\n\t\t\t\tthis.getPopupContainer().appendChild(this.resizeIcon);\n\t\t\t}\n\n\t\t\t//Compatibility\n\t\t\tthis.setMinWidth(mode.minWidth);\n\t\t\tthis.setMinHeight(mode.minHeight);\n\t\t}\n\t\telse if (mode === false && this.resizeIcon)\n\t\t{\n\t\t\tDom.remove(this.resizeIcon);\n\t\t\tthis.resizeIcon = null;\n\t\t}\n\t}\n\n\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\tthis.resizeContentPos = Dom.getPosition(this.getResizableContainer());\n\t\tthis.resizeContentOffset = this.resizeContentPos.left - Dom.getPosition(this.getPopupContainer()).left;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleResize(offsetX, offsetY, pageX, pageY): void\n\t{\n\t\tlet width = pageX - this.resizeContentPos.left;\n\t\tlet height = pageY - this.resizeContentPos.top;\n\n\t\tconst scrollWidth = document.documentElement.scrollWidth;\n\t\tif (this.resizeContentPos.left + width + this.resizeContentOffset >= scrollWidth)\n\t\t{\n\t\t\twidth = scrollWidth - this.resizeContentPos.left - this.resizeContentOffset;\n\t\t}\n\n\t\twidth = Math.max(width, this.getMinWidth());\n\t\theight = Math.max(height, this.getMinHeight());\n\n\t\tif (this.getMaxWidth() !== null)\n\t\t{\n\t\t\twidth = Math.min(width, this.getMaxWidth());\n\t\t}\n\n\t\tif (this.getMaxHeight() !== null)\n\t\t{\n\t\t\theight = Math.min(height, this.getMaxHeight());\n\t\t}\n\n\t\tthis.setWidth(width);\n\t\tthis.setHeight(height);\n\t}\n\n\tisTopAngle(): boolean\n\t{\n\t\treturn this.angle !== null && this.angle.position === 'top';\n\t}\n\n\tisBottomAngle(): boolean\n\t{\n\t\treturn this.angle !== null && this.angle.position === 'bottom';\n\t}\n\n\tisTopOrBottomAngle(): boolean\n\t{\n\t\treturn this.angle !== null && (this.angle.position === 'top' || this.angle.position === 'bottom');\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetAngleHeight(): number\n\t{\n\t\treturn (this.isTopOrBottomAngle() ? Popup.getOption('angleTopOffset') : 0);\n\t}\n\n\tsetOffset(params: { offsetTop: number, offsetLeft: number }): void\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isNumber(params.offsetLeft))\n\t\t{\n\t\t\tthis.offsetLeft = params.offsetLeft + Popup.getOption('offsetLeft');\n\t\t}\n\n\t\tif (Type.isNumber(params.offsetTop))\n\t\t{\n\t\t\tthis.offsetTop = params.offsetTop + Popup.getOption('offsetTop');\n\t\t}\n\t}\n\n\tsetTitleBar(params: string | { content: string }): void\n\t{\n\t\tif (!this.titleBar)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof (params) === 'object' && Type.isDomNode(params.content))\n\t\t{\n\t\t\tthis.titleBar.innerHTML = '';\n\t\t\tthis.titleBar.appendChild(params.content);\n\t\t}\n\t\telse if (typeof (params) === 'string')\n\t\t{\n\t\t\tthis.titleBar.innerHTML = '';\n\t\t\tthis.titleBar.appendChild(\n\t\t\t\tDom.create('span', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'popup-window-titlebar-text'\n\t\t\t\t\t},\n\t\t\t\t\ttext: params\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (this.params.draggable)\n\t\t{\n\t\t\tthis.titleBar.style.cursor = 'move';\n\t\t\tEvent.bind(this.titleBar, 'mousedown', this.onTitleMouseDown);\n\t\t}\n\t}\n\n\tsetClosingByEsc(enable: boolean): void\n\t{\n\t\tenable = Type.isBoolean(enable) ? enable : true;\n\t\tif (enable)\n\t\t{\n\t\t\tthis.closeByEsc = true;\n\t\t\tthis.bindClosingByEsc();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.closeByEsc = false;\n\t\t\tthis.unbindClosingByEsc();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tbindClosingByEsc(): void\n\t{\n\t\tif (this.closeByEsc && !this.isCloseByEscBinded)\n\t\t{\n\t\t\tEvent.bind(document, 'keyup', this.handleDocumentKeyUp);\n\t\t\tthis.isCloseByEscBinded = true;\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tunbindClosingByEsc(): void\n\t{\n\t\tif (this.isCloseByEscBinded)\n\t\t{\n\t\t\tEvent.unbind(document, 'keyup', this.handleDocumentKeyUp);\n\t\t\tthis.isCloseByEscBinded = false;\n\t\t}\n\t}\n\n\tsetAutoHide(enable: boolean): void\n\t{\n\t\tenable = Type.isBoolean(enable) ? enable : true;\n\t\tif (enable)\n\t\t{\n\t\t\tthis.autoHide = true;\n\t\t\tthis.bindAutoHide();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.autoHide = false;\n\t\t\tthis.unbindAutoHide();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tbindAutoHide(): void\n\t{\n\t\tif (this.autoHide && !this.isAutoHideBinded && this.isShown())\n\t\t{\n\t\t\tthis.isAutoHideBinded = true;\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tEvent.bind(this.getPopupContainer(), 'click', this.handleContainerClick);\n\t\t\t}\n\n\t\t\tif (this.overlay && this.overlay.element)\n\t\t\t{\n\t\t\t\tEvent.bind(this.overlay.element, 'click', this.handleOverlayClick);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.isCompatibleMode())\n\t\t\t\t{\n\t\t\t\t\tEvent.bind(document, 'click', this.handleAutoHide);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.addEventListener('click', this.handleAutoHide, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tunbindAutoHide(): void\n\t{\n\t\tif (this.isAutoHideBinded)\n\t\t{\n\t\t\tthis.isAutoHideBinded = false;\n\n\t\t\tif (this.isCompatibleMode())\n\t\t\t{\n\t\t\t\tEvent.unbind(this.getPopupContainer(), 'click', this.handleContainerClick);\n\t\t\t}\n\n\t\t\tif (this.overlay && this.overlay.element)\n\t\t\t{\n\t\t\t\tEvent.unbind(this.overlay.element, 'click', this.handleOverlayClick);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.isCompatibleMode())\n\t\t\t\t{\n\t\t\t\t\tEvent.unbind(document, 'click', this.handleAutoHide);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.removeEventListener('click', this.handleAutoHide, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event): void\n\t{\n\t\tif (this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.autoHideHandler !== null)\n\t\t{\n\t\t\tif (this.autoHideHandler(event))\n\t\t\t{\n\t\t\t\tthis._tryCloseByEvent(event);\n\t\t\t}\n\t\t}\n\t\telse if (event.target !== this.getPopupContainer() && !this.getPopupContainer().contains(event.target))\n\t\t{\n\t\t\tthis._tryCloseByEvent(event);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_tryCloseByEvent(event): void\n\t{\n\t\tif (this.isCompatibleMode())\n\t\t{\n\t\t\tthis.tryCloseByEvent(event);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.tryCloseByEvent(event);\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\ttryCloseByEvent(event): void\n\t{\n\t\tif (event.button === 0)\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleOverlayClick(event): void\n\t{\n\t\tthis.tryCloseByEvent(event);\n\t\tevent.stopPropagation();\n\t}\n\n\tsetOverlay(params: { backgroundColor?: string, opacity?: number }): void\n\t{\n\t\tif (this.overlay === null)\n\t\t{\n\t\t\tthis.overlay = {\n\t\t\t\telement: Tag.render`\n\t\t\t\t\t
\n\t\t\t\t`\n\t\t\t};\n\n\t\t\tthis.adjustOverlayZindex();\n\t\t\tthis.resizeOverlay();\n\n\t\t\tthis.appendContainer.appendChild(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}\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\tconst scrollHeight = Math.max(\n\t\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t\t);\n\n\t\t\tthis.overlay.element.style.width = document.documentElement.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\tif (this.overlay !== null)\n\t\t{\n\t\t\treturn (\n\t\t\t\tthis.params.zIndexAbsolute > 0\n\t\t\t\t\t? this.params.zIndexAbsolute\n\t\t\t\t\t: Popup.getOption('popupOverlayZindex') + this.params.zIndex\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn (\n\t\t\t\tthis.params.zIndexAbsolute > 0\n\t\t\t\t\t? this.params.zIndexAbsolute\n\t\t\t\t\t: Popup.getOption('popupZindex') + this.params.zIndex\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tadjustOverlayZindex(): void\n\t{\n\t\tif (this.overlay !== null && this.overlay.element !== null)\n\t\t{\n\t\t\tthis.overlay.element.style.zIndex = parseInt(this.getPopupContainer().style.zIndex) - 1;\n\t\t}\n\t}\n\n\tshow(): void\n\t{\n\t\tif (this.isShown() || this.isDestroyed())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\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.showOverlay();\n\t\tthis.getPopupContainer().style.display = 'block';\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\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\tDom.remove(this.popupContainer);\n\n\t\tthis.removeOverlay();\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.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 =\n\t\t\tbindElementPos.windowSize\n\t\t\t\t? bindElementPos.windowSize\n\t\t\t\t: { innerWidth: window.innerWidth, innerHeight: window.innerHeight }\n\t\t;\n\t\tconst windowScroll =\n\t\t\tbindElementPos.windowScroll\n\t\t\t\t? bindElementPos.windowScroll\n\t\t\t\t: { scrollLeft: window.pageXOffset, scrollTop: window.pageYOffset }\n\t\t;\n\t\tconst popupWidth = bindElementPos.popupWidth ? bindElementPos.popupWidth : this.popupContainer.offsetWidth;\n\t\tconst popupHeight = bindElementPos.popupHeight ? bindElementPos.popupHeight : this.popupContainer.offsetHeight;\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\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\tDom.adjust(this.popupContainer, {\n\t\t\tstyle: {\n\t\t\t\ttop: top + 'px',\n\t\t\t\tleft: left + 'px',\n\t\t\t\tzIndex: this.getZindex()\n\t\t\t}\n\t\t});\n\n\t\tthis.adjustOverlayZindex();\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\t//Right side\n\t\t\tconst scrollWidth = document.documentElement.scrollWidth;\n\t\t\tconst scrollHeight = document.documentElement.scrollHeight;\n\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\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\t\tfor (let i = 0; i < this._popups.length; i++)\n\t\t{\n\t\t\tzIndex = Math.max(zIndex, this._popups[i].params.zIndex);\n\t\t}\n\n\t\treturn zIndex;\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 { 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\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\t\tthis.text = Type.isStringFilled(options.text) ? options.text : '';\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: Element, text: Element}}\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.text))\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: 'popup-window-delimiter-section'\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.text\n\t\t\t\t\t\t}))\n\t\t\t\t\t]\n\t\t\t\t});\n\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.layout.item = Tag.render``;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.layout.item = Dom.create(this.href ? 'a' : 'span', {\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: [\n\t\t\t\t\t\t'menu-popup-item',\n\t\t\t\t\t\t(this.className ? this.className : 'menu-popup-no-icon'),\n\t\t\t\t\t\t(this.hasSubMenu() ? 'menu-popup-item-submenu' : '')\n\t\t\t\t\t].join(' ')\n\t\t\t\t},\n\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: this.title,\n\t\t\t\t\tonclick: Type.isString(this.onclick) ? this.onclick : '', // compatibility\n\t\t\t\t\ttarget: this.target ? this.target : ''\n\t\t\t\t},\n\n\t\t\t\tdataset: this.dataset,\n\n\t\t\t\tevents:\n\t\t\t\t\tType.isFunction(this.onclick)\n\t\t\t\t\t\t? { click: this.onItemClick.bind(this) }\n\t\t\t\t\t\t: null\n\t\t\t\t,\n\n\t\t\t\tchildren: [\n\t\t\t\t\tDom.create('span', { props: { className: 'menu-popup-item-icon' } }),\n\t\t\t\t\t(this.layout.text = 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.text\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 options = rootMenuWindow.params;\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.zIndexAbsolute = this.getMenuWindow().getPopupWindow().getZindex() + 2;\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.zIndex;\n\t\tdelete options.events;\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.layout.item.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 clientWidth = document.documentElement.clientWidth;\n\t\tconst clientHeight = document.documentElement.clientHeight;\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\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(event): void\n\t{\n\t\tif (this.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tEventEmitter.emit(this, 'onMouseEnter', undefined, { thisArg: this });\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(event): void\n\t{\n\t\tif (this.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tEventEmitter.emit(this, 'onMouseLeave', undefined, { thisArg: this });\n\n\t\tthis.clearSubMenuTimeout();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tclearSubMenuTimeout(): void\n\t{\n\t\tif (this.subMenuTimeout)\n\t\t{\n\t\t\tclearTimeout(this.subMenuTimeout);\n\t\t}\n\n\t\tthis.subMenuTimeout = null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleSubMenuDestroy(): void\n\t{\n\t\tthis.subMenuWindow = null;\n\t}\n}","import MenuItem from './menu-item';\nimport Popup from '../popup/popup';\nimport { Type, Text, Tag } from 'main.core';\nimport { type MenuOptions, type MenuItemOptions } from './menu-types';\nimport { type PopupTargetOptions } from '../popup/popup-types';\n\n/**\n * @memberof BX.Main\n */\nexport default class Menu\n{\n\tconstructor(options: MenuOptions)\n\t{\n\t\tlet [\n\t\t\tid: string,\n\t\t\tbindElement: PopupTargetOptions,\n\t\t\tmenuItems: MenuItemOptions[],\n\t\t\tparams: MenuOptions\n\t\t] = arguments;\n\n\t\tif (Type.isPlainObject(options) && !bindElement && !menuItems && !params)\n\t\t{\n\t\t\tparams = options;\n\t\t\tparams.compatibleMode = false;\n\n\t\t\tid = options.id;\n\t\t\tbindElement = options.bindElement;\n\t\t\tmenuItems = options.items;\n\n\t\t\tif (!Type.isStringFilled(id))\n\t\t\t{\n\t\t\t\tid = 'menu-popup-' + Text.getRandom();\n\t\t\t}\n\t\t}\n\n\t\tthis.id = id;\n\t\tthis.bindElement = bindElement;\n\n\t\t/**\n\t\t *\n\t\t * @type {MenuItem[]}\n\t\t */\n\t\tthis.menuItems = [];\n\t\tthis.itemsContainer = null;\n\t\tthis.params = params && typeof (params) === 'object' ? params : {};\n\t\tthis.parentMenuWindow = null;\n\t\tthis.parentMenuItem = null;\n\n\t\tif (menuItems && Type.isArray(menuItems))\n\t\t{\n\t\t\tfor (let i = 0; i < menuItems.length; i++)\n\t\t\t{\n\t\t\t\tthis.addMenuItemInternal(menuItems[i], null);\n\t\t\t}\n\t\t}\n\n\t\tthis.layout = {\n\t\t\tmenuContainer: null,\n\t\t\titemsContainer: null\n\t\t};\n\n\t\tthis.popupWindow = this.__createPopup();\n\t}\n\n\t/**\n\t * @private\n\t */\n\t__createPopup(): Popup\n\t{\n\t\tconst domItems = [];\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\tconst itemLayout = item.getLayout();\n\t\t\tdomItems.push(itemLayout.item);\n\t\t}\n\n\t\tconst defaults = {\n\t\t\tcloseByEsc: false,\n\t\t\tangle: false,\n\t\t\tautoHide: true,\n\t\t\toffsetTop: 1,\n\t\t\toffsetLeft: 0,\n\t\t\tanimation: 'fading'\n\t\t};\n\n\t\tconst options = Object.assign(defaults, this.params);\n\n\t\t//Override user params\n\t\toptions.noAllPaddings = true;\n\t\toptions.darkMode = false;\n\t\toptions.autoHideHandler = this.handleAutoHide.bind(this);\n\n\t\tthis.layout.itemsContainer = Tag.render`\n\t\t\t
${domItems}
\n\t\t`;\n\n\t\tthis.layout.menuContainer = Tag.render`\n\t\t\t
${this.layout.itemsContainer}
\n\t\t`;\n\n\t\tthis.itemsContainer = this.layout.itemsContainer;\n\t\toptions.content = this.layout.menuContainer;\n\n\t\t//Make internal event handlers first in the queue.\n\t\toptions.events = {\n\t\t\tonClose: this.handlePopupClose.bind(this),\n\t\t\tonDestroy: this.handlePopupDestroy.bind(this)\n\t\t};\n\n\t\tconst id = options.compatibleMode === false ? this.getId() : 'menu-popup-' + this.getId();\n\t\tconst popup = new Popup(id, this.bindElement, options);\n\t\tif (this.params && this.params.events)\n\t\t{\n\t\t\tpopup.subscribeFromOptions(this.params.events);\n\t\t}\n\n\t\treturn popup;\n\t}\n\n\tgetPopupWindow(): Popup\n\t{\n\t\treturn this.popupWindow;\n\t}\n\n\tshow(): void\n\t{\n\t\tthis.getPopupWindow().show();\n\t}\n\n\tclose(): void\n\t{\n\t\tthis.getPopupWindow().close();\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.getPopupWindow().destroy();\n\t}\n\n\ttoggle(): void\n\t{\n\t\tif (this.getPopupWindow().isShown())\n\t\t{\n\t\t\tthis.close();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupClose(): void\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\titem.closeSubMenu();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandlePopupDestroy(): void\n\t{\n\t\tfor (let i = 0; i < this.menuItems.length; i++)\n\t\t{\n\t\t\tconst item = this.menuItems[i];\n\t\t\titem.destroySubMenu();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\thandleAutoHide(event): boolean\n\t{\n\t\treturn !this.containsTarget(event.target);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tcontainsTarget(target: Element): boolean\n\t{\n\t\tconst el = this.getPopupWindow().getPopupContainer();\n\t\tif (this.getPopupWindow().isShown() && (target === el || el.contains(target)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.getMenuItems().some(function(item: MenuItem) {\n\n\t\t\treturn item.getSubMenu() && item.getSubMenu().containsTarget(target);\n\n\t\t});\n\t}\n\n\tsetParentMenuWindow(parentMenu: Menu): void\n\t{\n\t\tif (parentMenu instanceof Menu)\n\t\t{\n\t\t\tthis.parentMenuWindow = parentMenu;\n\t\t}\n\t}\n\n\tgetParentMenuWindow(): Menu | null\n\t{\n\t\treturn this.parentMenuWindow;\n\t}\n\n\tgetRootMenuWindow(): Menu | null\n\t{\n\t\tlet root = null;\n\t\tlet parent = this.getParentMenuWindow();\n\t\twhile (parent !== null)\n\t\t{\n\t\t\troot = parent;\n\t\t\tparent = parent.getParentMenuWindow();\n\t\t}\n\n\t\treturn root;\n\t}\n\n\tsetParentMenuItem(parentItem: MenuItem): void\n\t{\n\t\tif (parentItem instanceof MenuItem)\n\t\t{\n\t\t\tthis.parentMenuItem = parentItem;\n\t\t}\n\t}\n\n\tgetParentMenuItem(): MenuItem | null\n\t{\n\t\treturn this.parentMenuItem;\n\t}\n\n\taddMenuItem(menuItemJson: any, targetItemId: string): MenuItem\n\t{\n\t\tconst menuItem = this.addMenuItemInternal(menuItemJson, targetItemId);\n\t\tif (!menuItem)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst itemLayout = menuItem.getLayout();\n\t\tconst targetItem = this.getMenuItem(targetItemId);\n\t\tif (targetItem !== null)\n\t\t{\n\t\t\tconst targetLayout = targetItem.getLayout();\n\t\t\tthis.itemsContainer.insertBefore(itemLayout.item, targetLayout.item);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.itemsContainer.appendChild(itemLayout.item);\n\t\t}\n\n\t\treturn menuItem;\n\t}\n\n\t/**\n\t * @private\n\t */\n\taddMenuItemInternal(menuItemJson: any, targetItemId: string): MenuItem\n\t{\n\t\tif (\n\t\t\t!menuItemJson ||\n\t\t\t(!menuItemJson.delimiter && !Type.isStringFilled(menuItemJson.text)) ||\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';\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};\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","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","BaseEvent","compatData","uniquePopupId","zIndex","isNumber","parseInt","zIndexAbsolute","buttons","isArray","offsetTop","getOption","offsetLeft","firstShow","bordersWidth","bindElementPos","closeIcon","resizeIcon","angle","overlay","titleBar","bindOptions","autoHide","autoHideHandler","handleAutoHide","handleOverlayClick","isAutoHideBinded","closeByEsc","isCloseByEscBinded","cacheable","destroyed","width","height","minWidth","minHeight","maxWidth","maxHeight","padding","contentPadding","background","contentBackground","appendContainer","document","body","dragOptions","cursor","callback","dragged","dragPageX","dragPageY","animationShowClassName","animationCloseClassName","animationCloseEventType","handleDocumentMouseMove","handleDocumentMouseUp","handleDocumentKeyUp","handleResizeWindow","handleResize","handleMove","onTitleMouseDown","handleFullScreen","subscribeFromOptions","popupClassName","contentColor","darkMode","Tag","render","handleCloseIconClick","style","contentContainer","popupContainer","getZindex","appendChild","buttonsContainer","setAngle","setOverlay","setOffset","setBindElement","setTitleBar","setContent","content","setButtons","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setResizeMode","resizable","setPadding","setContentPadding","setBackground","setContentBackground","setAnimation","animation","setCacheable","contentNoPaddings","noAllPaddings","bindOnResize","Event","window","isElementNode","hasParent","isDomNode","parentNode","isCompatibleMode","display","innerHTML","remove","ButtonClass","Reflection","getClass","newButtons","i","button","push","setContext","getId","top","left","clientX","clientY","pageX","pageY","bottom","getPosition","windowSize","innerWidth","innerHeight","windowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","popupWidth","getPopupContainer","offsetWidth","popupHeight","offsetHeight","forceTop","element","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","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","adjustOverlayZindex","resizeOverlay","opacity","parseFloat","toPrecision","backgroundColor","overlayTimeout","clearInterval","setInterval","scrollHeight","clientHeight","showOverlay","adjustPosition","animateOpening","animateClosing","hideOverlay","isCacheable","destroy","show","handleTransitionEnd","showClassName","closeClassName","closeAnimationType","animationName","unbindAll","removeOverlay","getBindElementPos","forceBindPosition","angleTopOffset","forceLeft","bindLeft","isBottomAngle","isTopAngle","getAngleHeight","fullscreenStatus","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","requestFullScreen","mozRequestFullScreen","webkitRequestFullScreen","console","log","keyCode","checkEscPressed","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","handleOnAfterInit","onSubMenuShow","onSubMenuClose","MenuItem","title","delimiter","href","dataset","menuShowDelay","subMenuOffsetX","_items","items","disabled","onclick","menuWindow","subMenuWindow","layout","item","getLayout","hasOwnProperty","children","html","hasSubMenu","join","attrs","click","onItemClick","isDisabled","disable","onItemMouseEnter","onItemMouseLeave","getTextContainer","addSubMenu","closeSiblings","closeChildren","getPopupWindow","adjustSubMenu","rootMenuWindow","getMenuWindow","getRootMenuWindow","Menu","setParentMenuWindow","setParentMenuItem","handleSubMenuDestroy","clearSubMenuTimeout","siblings","getMenuItems","closeSubMenu","destroyChildren","destroySubMenu","itemRect","getBoundingClientRect","getPopupPadding","angleOffset","anglePosition","popupBottom","clientWidth","exceeded","roundOffset","ceil","popupPadding","menuContainer","menu","getContainer","call","undefined","thisArg","subMenuTimeout","showSubMenu","clearTimeout","menuItems","itemsContainer","parentMenuWindow","parentMenuItem","addMenuItemInternal","__createPopup","domItems","itemLayout","defaults","Object","assign","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","value","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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"}