@syncfusion/ej2-layouts 21.1.37 → 21.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["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, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.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 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\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, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_6 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_4.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_4.element,\n isDragScroll: true,\n handle: this_4.draggableHandle ? this_4.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_4.onDraggingStart.bind(this_4),\n dragStop: function (args) {\n _this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_4.dragCollection.indexOf(this_4.dragobj) === -1) {\n this_4.dragCollection.push(this_4.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_4 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n // eslint-disable-next-line\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_7 = function (i) {\n this_5.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_5 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_7(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isReact","cPaneCount","k","clearTemplate","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","entirePanelsY","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","_loop_6","abortArray","this_4","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","intDestroy","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_7","this_5","localPanel","pan"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["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, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.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 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (flexPane.style.flexBasis !== '') {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\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, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n // eslint-disable-next-line\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_6 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_4.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_4.element,\n isDragScroll: true,\n handle: this_4.draggableHandle ? this_4.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_4.onDraggingStart.bind(this_4),\n dragStop: function (args) {\n _this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_4.dragCollection.indexOf(this_4.dragobj) === -1) {\n this_4.dragCollection.push(this_4.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_4 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n // eslint-disable-next-line\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n // eslint-disable-next-line\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_7 = function (i) {\n this_5.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_5 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_7(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isReact","cPaneCount","k","clearTemplate","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","entirePanelsY","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","_loop_6","abortArray","this_4","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","intDestroy","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_7","this_5","localPanel","pan"],"mappings":"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"}