@syncfusion/ej2-layouts 21.2.6 → 21.2.9

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.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","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","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","beforeEvent","cancel","helper","extend","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","targetEle","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","removeEventListener","updateSplitterSize","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","dragging","drag","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","panelContent","disablePanel","header","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","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","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","this_3","rowVal","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","this_4","abortArray","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","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_5","localPanel","pan"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-layouts.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 else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\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 if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\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.checkCollision = [];\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 if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\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","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","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","beforeEvent","cancel","helper","extend","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","targetEle","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","removeEventListener","updateSplitterSize","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","dragging","drag","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","panelContent","disablePanel","header","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","checkCollision","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","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","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","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","this_3","rowVal","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","this_4","abortArray","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","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_5","localPanel","pan"],"mappings":"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"}