@syncfusion/ej2-layouts 20.3.58 → 20.4.40
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/.eslintrc.json +16 -1
- package/CHANGELOG.md +1 -21
- 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 +28 -16
- package/dist/es6/ej2-layouts.es2015.js.map +1 -1
- package/dist/es6/ej2-layouts.es5.js +26 -14
- 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 +8 -7
- package/src/dashboard-layout/dashboard-layout.js +2 -2
- package/src/splitter/splitter.js +24 -13
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n 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","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isReact","clearTemplate","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","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","drag","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","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","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","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","this_3","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","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","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n 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","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isReact","cPaneCount","k","clearTemplate","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","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","drag","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","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","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","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","this_3","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","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","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan"],"mappings":"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"}
|