@syncfusion/ej2-layouts 20.3.57 → 20.3.58
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.
- package/CHANGELOG.md +14 -0
- package/dist/ej2-layouts.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js.map +1 -1
- package/dist/es6/ej2-layouts.es2015.js +61 -11
- package/dist/es6/ej2-layouts.es2015.js.map +1 -1
- package/dist/es6/ej2-layouts.es5.js +61 -11
- package/dist/es6/ej2-layouts.es5.js.map +1 -1
- package/dist/global/ej2-layouts.min.js +2 -2
- package/dist/global/ej2-layouts.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +5 -5
- package/src/dashboard-layout/dashboard-layout.js +7 -2
- package/src/splitter/splitter.js +54 -9
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n 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 this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n var min;\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 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 _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 var proxy;\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 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 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 if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\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.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 if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\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 (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\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) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\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 if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\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.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\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 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.prevPaneCurrentWidth = separatorNewPosition + this.convertPixelToNumber(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 this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n if (!(this.allPanes.length > 2)) {\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)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n this.elementWidth += currentX;\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 + item.sizeX > this.columns) {\n item.sizeX = item.sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\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.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\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.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n });\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 // 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 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 DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n 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_6 = function (i) {\n this_4.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_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","flexGrow","staticPane","status","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","previousElementSibling","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","currentIndex","array","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","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","isReact","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","clearTemplate","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToColumns","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","filter","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","entirePanelsY","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","k","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_6","this_4","localPanel","pan"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n if (this.isReact) {\n this.clearTemplate();\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 this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n var min;\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 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 _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 var proxy;\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 parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\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.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 if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\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 (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\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) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\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 if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\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.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis == '' && this.nextPane.style.flexBasis == '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex == middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane \n else {\n if (this.previousPane.style.flexBasis !== \"\" && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== \"\" && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== \"\" && this.nextPane.style.flexBasis !== \"\";\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\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.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\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.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n });\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 // 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 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 DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n 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_6 = function (i) {\n this_4.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_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isReact","clearTemplate","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","flexGrow","staticPane","status","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","previousElementSibling","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","currentIndex","array","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","filter","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","entirePanelsY","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","k","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_6","this_4","localPanel","pan"],"mappings":"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"}
|