{"version":3,"file":"ej2-popups.min.js","sources":["../../src/common/position.js","../../src/common/collision.js","../../src/popup/popup.js","../../src/common/resize.js","../../src/spinner/spinner.js","../../src/dialog/dialog.js","../../src/tooltip/tooltip.js"],"sourcesContent":["/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n (positionY + positionX === 'topright') ? popupRect = undefined : popupRect = targetValues;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\nfunction setPosx(value, pos) {\n pos.left = value;\n}\nfunction setPosy(value, pos) {\n pos.top = value;\n}\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n return pos;\n}\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\nfunction getElementRight() {\n return elementRect.right + getBodyScrollLeft() - (popupRect ? popupRect.width : 0);\n}\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var topData = '';\n var leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, axis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null };\n var eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n };\n var elementRect = element.getBoundingClientRect();\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\nfunction leftCollideCheck(left, right) {\n var leftSide = false;\n var rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left >= ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom()) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topCollideCheck(top, bottom) {\n var topSide = false;\n var bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : document.documentElement.offsetWidth;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n */\n Popup.prototype.destroy = function () {\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n */\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n this.element.appendChild(this.content);\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var display = this.element.style.display;\n var parentDisplay = void 0;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY) {\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n * @param { AnimationModel | Function } collisionOrAnimationOptions? - To pass animation options or collision function.\n * @param { Function } collision? - To pass the collision function.\n * @param { HTMLElement } relativeElement? - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n * @param { AnimationModel } animationOptions? - To give the animation options.\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @private\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n //Body direct children element traversal\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n // Checking the max-zindex value\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// tslint:disable-next-line\nvar proxy;\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// tslint:disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n}\n/* istanbul ignore next */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var containerRectValues;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if ((getClientRectValues(targetElement).bottom + currentHeight) > maxHeight) {\n calculateValue = false;\n targetElement.style.height = maxHeight - getClientRectValues(targetElement).bottom + 'px';\n }\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) < maxWidth\n || (targetRectValues.right - containerRectValues.left) > targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n}\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar spinTemplate = null;\nvar spinCSSClass = null;\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n * @param args\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @param args\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[uniqueID].timeOut = 0;\n globalObject[uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n var x = 0;\n var y = 0;\n var rad = 24;\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n function boot_animate(radius) {\n if (globalTimeOut[id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n var spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0,\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[id].isAnimate = !isHide;\n switch (globalTimeOut[id].type) {\n case 'Material':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @param args\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Browser, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /**\n * Constructor for creating the widget\n * @hidden\n */\n function Dialog(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = this.minHeight.toString();\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.trigger('overlayClick', event);\n _this.focusContent();\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n ;\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + footerHeight);\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = this.enableRtl ? 'south-west' : 'south-east';\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = this.ftrTemplateContent.querySelectorAll(value);\n buttonObj = { element: items[items.length - 1] };\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.hide(event);\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n if (this.showCloseIcon) {\n this.renderCloseIcon();\n }\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && typeof (this.buttons[i].click) === 'function' && footerBtn.length > 0) {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n this.btnObj[i].element.classList.add('e-flat');\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.setContent = function () {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = this.sanitizeHelper(template);\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /**\n * @hidden\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\!?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msMatchesSelector : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n node.focus();\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n * @private\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n typeof (this.content) === 'string' ? (this.isBlazorServerRender()\n && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() :\n this.contentEle.appendChild(this.content);\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons':\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.zIndex = getZindexPartial(zIndexElement);\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n * @method destroy\n * @return {void}\n * @memberof dialog\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n * @return {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @return {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n * @return {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n !isNullOrUndefined(_this.targetEle) ? removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]) :\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n if (args) {\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n * @param { number } index - Index of the button.\n * @return {Button}\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n function alert(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n function confirm(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n return options;\n }\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove, updateBlazorTemplate, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the Tooltip Component\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isBlazorTooltip = false;\n _this.contentTargetValue = null;\n _this.contentEvent = null;\n _this.contentAnimation = null;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n if (!(this.isServerRender())) {\n addClass([this.element], ROOT);\n }\n };\n Tooltip.prototype.isServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n if (!(this.isServerRender())) {\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n }\n else {\n var tip = this.tooltipEle.querySelector('.' + ARROW_TIP);\n addClass([tip.querySelector('.' + ARROW_TIP_OUTER)], this.tipClass);\n addClass([tip.querySelector('.' + ARROW_TIP_INNER)], this.tipClass);\n this.tooltipEle.appendChild(tip);\n }\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n var offsetPos = this.calculateTooltipOffset(this.position);\n var elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.reposition = function (target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n };\n Tooltip.prototype.closePopupHandler = function () {\n resetBlazorTemplate(this.element.id + 'content', 'Content');\n this.clearTemplate(['content']);\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = this.tooltipEle.querySelectorAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = this.tooltipEle.querySelector('.' + CONTENT);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n if (this.isBlazorTooltip || !(this.isServerRender())) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string' && this.content.indexOf('
Blazor') < 0) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent.innerHTML = this.content;\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n if (typeof this.content === 'string' && this.content.indexOf('
Blazor') >= 0) {\n this.isBlazorTemplate = true;\n updateBlazorTemplate(this.element.id + 'content', 'Content', this);\n }\n }\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(document.querySelectorAll('[data-tooltip-id= ' + this.ctrlId + '_content]'));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n var isBlazorTooltipRendered = false;\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.contentTargetValue = target;\n this.contentEvent = e;\n this.contentAnimation = showAnimation;\n var args = { 'enableTooltip': 'true' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n isBlazorTooltipRendered = true;\n }\n else {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.beforeRenderBlazor(target, this);\n }\n if (!isBlazorTooltipRendered) {\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n else {\n if (this.isServerRender()) {\n addClass([this.tooltipEle], POPUP_OPEN);\n document.body.appendChild(this.tooltipEle);\n this.renderCloseIcon();\n this.renderPopup(target);\n }\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n }\n };\n ;\n Tooltip.prototype.contentUpdated = function (args) {\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.ctrlId = this.element.id;\n this.tooltipEle = document.querySelector('#' + this.ctrlId + '_content');\n if (this.tooltipEle) {\n this.tooltipEle.setAttribute('style', 'width:' + formatUnit(this.width) +\n ';height:' + formatUnit(this.height) + ';position:absolute;');\n this.beforeRenderBlazor(this.contentTargetValue, this);\n this.afterRenderBlazor(this.contentTargetValue, this.contentEvent, this.contentAnimation, this);\n this.contentTargetValue = this.contentEvent = this.contentAnimation = null;\n }\n }\n }\n };\n ;\n Tooltip.prototype.beforeRenderBlazor = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n if (!(this.isServerRender())) {\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n }\n document.body.appendChild(ctrlObj.tooltipEle);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.afterRenderBlazor = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // tslint:disable-next-line:no-any\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string'\n || (this.isServerRender()) && this.isBlazorTemplate;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, (this.target ? this.element : null), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = fit(this.tooltipEle, (this.target ? this.element : null), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.isServerRender()) {\n _this.blazorHide(hideAnimation, target);\n }\n else {\n _this.popupHide(hideAnimation, target);\n }\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n /* istanbul ignore next */\n Tooltip.prototype.blazorHide = function (hideAnimation, target) {\n var proxy = this;\n var hide = function () {\n proxy.popupHide(hideAnimation, target);\n };\n if (this.popupObj) {\n this.popupHide(hideAnimation, target);\n }\n else {\n setTimeout(hide, 200);\n }\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.isServerRender() && this.tooltipEle) {\n this.tooltipEle.style.display = 'none';\n var args = { 'enableTooltip': 'false' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n remove(this.tooltipEle);\n }\n else if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n * @private\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n * @hidden\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.add(this.element, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n if (!this.isServerRender()) {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n * @hidden\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.remove(this.element, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n if (!this.isServerRender()) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n return target;\n };\n /**\n * Core method to return the component name.\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n if (this.isServerRender()) {\n this.isBlazorTooltip = true;\n }\n this.renderContent();\n }\n else if (this.isServerRender()) {\n var args = { 'content': newProp.content };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n * @param element Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param animation Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @return {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n * @param animation Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @return {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n * @param target Target element where the Tooltip content or position needs to be refreshed.\n * @return {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @return {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n if (!this.isServerRender()) {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n }\n if (this.isServerRender() && this.tooltipEle) {\n var placeholder = document.querySelector('#' + this.ctrlId + '_content_placeholder');\n if (placeholder) {\n placeholder.appendChild(this.tooltipEle);\n }\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n"],"names":["calculateRelativeBasedPosition","anchor","element","fixedElement","anchorPos","left","top","tempAnchor","isNullOrUndefined","offsetParent","style","position","offsetLeft","offsetTop","scrollLeft","scrollTop","parentElement","calculatePosition","currentElement","positionX","positionY","targetValues","popupRect","undefined","fixedParent","parentDocument","ownerDocument","pos","updatePosition","toLowerCase","setPosx","value","setPosy","posX","posY","elementRect","getBoundingClientRect","getElementHCenter","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","getBodyScrollTop","documentElement","body","getBodyScrollLeft","bottom","height","right","width","fit","viewPortElement","axis","X","Y","elemData","targetContainer","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","x","y","elemOffset","data","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","push","rightSide","leftSide","bottomSide","flip","target","offsetX","offsetY","tEdge","TL","TR","BL","BR","eEdge","updateElementData","setPosition","leftFlip","topFlip","setPopup","getComputedStyle","edge","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","window","innerHeight","windowWidth","innerWidth","document","offsetWidth","getScrollableParent","eleStyle","scrollParents","overflowRegex","parent","tagName","parentStyle","test","overflow","overflowY","overflowX","getZindexPartial","parentZindex","index","defaultView","getPropertyValue","childrenZindex","i","children","length","isEqualNode","siblingsZindex","childNodes","slice","call","finalValue","concat","currentZindexValue","Math","max","apply","getMaxZindex","maxZindex","elements","getElementsByTagName","i_1","createResize","args","resizeStart","resizeBegin","resize","resizing","resizeEnd","resizeComplete","targetElement","getDOMElement","containerElement","boundary","directions","direction","split","resizeHandler","createElement","className","RESIZE_HANDLER","appendChild","minHeight","minWidth","maxWidth","maxHeight","proxy","classList","contains","wireEvents","domElement","isNOU","querySelector","this","resizers","querySelectorAll","selectedHandler","EventHandler","add","onMouseDown","eventName","Browser","info","name","onTouchStart","getEventType","e","indexOf","preventDefault","calculateValues","originalMouseX","pageX","originalMouseY","pageY","FOCUSED_HANDLER","onMouseMove","onMouseUp","RESTRICT_LEFT","setLeft","touchMoveEvent","touchEndEvent","remove","originalWidth","parseFloat","replace","originalHeight","originalX","originalY","coordinates","touches","changedTouches","resizeTowards","elementClass","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","clientHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","offsetHeight","topWithoutborder","RESIZE_WITHIN_VIEWPORT","parseInt","toString","targetTop","calculatedTop","boundaryRectValues","type","currentHeight","top_1","rectValues","documentWidth","clientWidth","resizeWestWidth","calculatedWidth","left_1","previousWidth","setWidth","setMinHeight","minimumHeight","setMaxWidth","setMaxHeight","removeResize","handlers","detach","Spinner","action","options","createSpinner","cssClass","label","showSpinner","hideSpinner","setSpinner","internalCreateElement","radius","makeElement","container","create_spinner_container","wrap","template","spinTemplate","theme","getTheme","calculateRadius","setTheme","createLabel","inner_wrap","CLS_SPINTEMPLATE","replaceContent","spinCSSClass","CLS_HIDESPIN","labelEle","CLS_SPINLABEL","textContent","createMaterialSpinner","uniqueID","random_generator","globalTimeOut","timeOut","create_material_element","CLS_MATERIALSPIN","mat_calculate_attributes","createBootstrap4Spinner","CLS_BOOT4SPIN","startMatAnimate","globalObject","globalVariables","animateMaterial","globalInfo","timeOutVar","createFabricSpinner","create_fabric_element","CLS_FABRICSPIN","fb_calculate_attributes","createHighContrastSpinner","CLS_HIGHCONTRASTSPIN","innerContainer","CLS_SPININWRAP","svg","removeChild","createBootstrapSpinner","create_bootstrap_element","boot_calculate_attributes","svgBoot","createElementNS","setAttribute","CLS_BOOTSPIN","insertBefore","firstChild","item","bootCircle","CLS_SPINCIRCLE","defaultRadius","startArc","start","defineArcPoints","circleEle","generateSeries","begin","stop","formSeries","series","end","count","increment","toFixed","animateBootstrap","id","getAttribute","circle","boot_animate","isAnimate","setTimeout","bind","getElementsByClassName","innerHTML","defaultSize","DEFT_MAT_WIDTH","DEFT_FAB_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT_WIDTH","previousId","random","combine","charAt","floor","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","CLS_SPINARC","cls","svgMaterial","matCirclePath","spinnerContainer","CLS_SPINWRAP","spinnerInnerContainer","spinnerInfo","createCircle","easeAnimation","easing","duration","mat_animation","currentTime","min","Date","getTime","startTime","updatePath","change","path","getDashOffset","diameter","strokeSize","getSize","getStrokeSize","rotate","transformOrigin","drawArc","PI","offset","current","timestamp","timecount","innerConainer","trgClass","centerX","centerY","defineCircle","defineArc","angle","radians","cos","sin","endArc","join","showHideSpinner","isHide","spinnerWrap","inner","CLS_SHOWSPIN","svgEle","clearTimeout","ensureTemplate","makeEle","replaceTheme","svgElement","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","PositionData","_super","Property","ChildProperty","CLASSNAMES","ROOT","RTL","OPEN","CLOSE","Popup","onPropertyChanged","newProp","oldProp","_i","_a","keys","setStyleAttribute","formatUnit","zIndex","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","getModuleName","resolveCollision","checkCollision","getPersistData","addOnPersist","destroy","unwireEvents","render","styles","isDevice","orientationOnChange","getRelateToElement","parent_1","scrollRefresh","parent_2","relateToElement","relateTo","setProperties","hide","targetVisible","isElementOnViewport","targetInvisibleStatus","trigger","scrollElement","parent_3","isElementVisible","rect","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","off","ele","elementView","parent_4","preRender","reposition","enableRtl","content","_this","collision","checkFixedParent","display","parentDisplay","getAnchorPosition","error","anchorEle","eleRect","anchorRect","targetType","callFlip","param","callFit","viewPortRect","horz","vert","show","animationOptions","relativeElement","zIndexElement","showAnimation","removeClass","addClass","isDestroyed","Animation","animate","hideAnimation","Complex","Event","NotifyPropertyChanges","Component","ButtonProps","AnimationSettings","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","Dialog","initialize","initRender","enableResize","setResize","animationSettings","effect","getMinHeight","renderComplete","headerContent","allowMaxHeight","preventVisibility","clonedEle","cloneNode","closeIconClickEventHandler","event","dlgOverlayClickEventHandler","focusContent","localeText","close","l10n","L10n","locale","checkPositionData","prevOnChange","isProtectedOnChange","isNumberValue","isNumber","getEle","list","selector","computedHeaderHeight","computedFooterHeight","footerEle","headerHeight","footerHeight","onResizeStart","dialogObj","cancel","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","isModal","targetEle","wireWindowResizeEvent","unWireWindowResizeEvent","keyDown","keyCode","buttonObj","btnObj","ftrTemplateContent","items","activeElement","shiftKey","focusableElements","focus","isTagName","isContentEdit","hasAttribute","closeOnEscape","ctrlKey","primaryButtonEle","buttonIndex_1","buttons","some","buttonModel","isPrimary","click","setCSSClass","initialRender","attributes","role","setzIndex","calculatezIndex","contentEle","setTargetContent","header","setHeader","showCloseIcon","renderCloseIcon","footerTemplate","setButton","setFooterTemplate","allowDragging","setAllowDragging","aria-modal","setIsModal","dlgContainer","dlgOverlay","parentEle","refElement","popupObj","open","eventArgs","preventFocus","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","blur","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","visible","dialogConHeight","resizeIcon","zIndexValue","isNaN","setPopupPosition","dragObj","Draggable","clone","isDragScroll","abort","handle","dragStart","dragEventArgs","isBlazor","bindEvents","dragElement","dragStop","drag","dragArea","buttonContent","buttonType","btn","attrs","outerHTML","footerBtn","Button","appendTo","aria-describedby","innerContentElement","HTMLElement","setTemplate","sanitizeHelper","isIE","toElement","prop","templateFn","templateProps","templateValue","isStringTemplate","compile","fromElements","append","enableHtmlSanitizer","dialogItem","SanitizeHtmlHelper","beforeSanitize","beforeEvent","helper","extend","serializeValue","isContent","createDocumentFragment","forEach","el","nodeType","headerEle","createHeaderContent","aria-labelledby","closeIcon","closeIconBtnObj","iconCss","DLG_CLOSE_ICON","closeIconTitle","prepend","setLocale","getConstant","oldCSSClass","parentNode","getValidFocusNode","node","u","tabIndex","disabled","disableElement","getAutoFocusNode","validNode","t","elementMatch","matches","webkitMatchesSelector","msMatchesSelector","Element","bindEvent","updateSanitizeContent","isServerRendered","innerText","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","unWireEvents","removeAttribute","isReact","clearTemplate","addEventListener","removeEventListener","isFullScreen","fullScreen","eventArgs_1","beforeOpenArgs","openAnimation","delay","dialogOpen","renderReactTemplates","isInteracted","beforeCloseArgs","closeAnimation","getButtons","Collection","DialogUtility","alert","dialogElement","alertDialogObj","okButtonModel","createDialog","alertOptions","confirm","confirmDialogObj","okCancelButtonModel","confirmOptions","dialogObject","option","formOptions","setAlertButtonModel","setConfirmButtonModel","title","isDraggable","alertButtonModel","okButton","formButtonModel","cancelButtonModel","cancelButton","buttonPropModel","buttonProps","text","icon","Tooltip","isBlazorTooltip","contentTargetValue","contentEvent","contentAnimation","formatPosition","isServerRender","_b","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tooltipEle","tipClass","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","renderPopup","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionFlipFit","dataBind","needTemplateReposition","findTarget","tooltipEventArgs","resetBlazorTemplate","clear","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","showTipPointer","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","POINTER_ADJUST","renderContent","tooltipContent","sanitize","tempArr","isBlazorTemplate","updateBlazorTemplate","isSticky","tipClose","ICON","touchStartEvent","onStickyClose","addDescribedBy","describedby","trim","data-tooltip-id","removeDescribedBy","splice","orgdescribedby","tapHoldHandler","evt","autoCloseTimer","targetHover","originalEvent","touchEndHandler","targetClick","closest","hideTooltip","animation","closeDelay","targetList_1","ctrlId","target_1","restoreElement","showTooltip","showTimer","hideTimer","observeCallback","beforeRenderArgs","beforeRenderCallback","isBlazorTooltipRendered","isHidden","enableTooltip","interopAdaptor","invokeMethodAsync","getUniqueID","TOOLTIP_WRAP","aria-hidden","beforeRenderBlazor","afterRenderBlazor","PopupAnimation","contentUpdated","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","timingFunction","openDelay","wireMouseEvents","tooltip","viewContainerRef","horizontal","vertical","affectedPos","newpos","collidedPosition","eleOffset","arrowleft","isTooltipOpen","tooltipHide","blazorHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","scrollHandler","opensOn","triggerList_1","getTriggerList","wireFocusEvents","touchModule","Touch","tapHoldThreshold","tapHold","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","refresh","placeholder"],"mappings":"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"}