@syncfusion/ej2-layouts 29.1.38 → 29.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js","../../src/timeline/timeline.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 var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\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 if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\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.clearTemplate();\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 if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\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 if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\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 if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\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 if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\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 if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\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 if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\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 if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\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 var proxy = null || 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', '-1');\n separator.setAttribute('aria-hidden', 'true');\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 if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\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-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\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 });\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 if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\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) :\n 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 if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\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 Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\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);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\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 EventHandler.remove(this.element, 'keydown', this.onMove);\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 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 var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\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 if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\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 this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\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 (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n 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 cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\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 var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\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 EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\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 }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n 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 if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\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 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 parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\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 if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\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 if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\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 var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\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 panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + 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 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 = this.element.querySelector('[id=\\'' + 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 (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\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 collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.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 _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.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 for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\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: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\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(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n _this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\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 () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', '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 var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\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 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.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\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 if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\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 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 this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\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 DashboardLayout.prototype.onPropertyChanged = function (newProp) {\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 if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\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 this[key] = dataObj[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","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, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\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","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","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","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","dragging","drag","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","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","closest","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","panel","updatedPanel","updatedRows","getElementById","updatedHeight","getRowColumn","setHeightWidth","heightValue","entirePanelsY","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","shadowSize","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan","TimelineOrientation","TimelineAlign","TimelineItem","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","_b","cssClasses","align","haveOneSidecontent","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotContainer","dotEleCss","dotCss","DOTCONTENT","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","classArray","updateContent","updateItems","oldPropItems","_c","_d","oppositeEle","timelineItemElements","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js","../../src/timeline/timeline.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 var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\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 if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\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.clearTemplate();\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 if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\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 if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\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 if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\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 if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\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 if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\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 if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\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 if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\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 var proxy = null || 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', '-1');\n separator.setAttribute('aria-hidden', 'true');\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 if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\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-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\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 });\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 if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\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) :\n 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 if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\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 Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\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);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\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 EventHandler.remove(this.element, 'keydown', this.onMove);\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 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 var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\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 if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\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 this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\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 (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n 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 cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\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 var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\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 EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\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 }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\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.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n 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 if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\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 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 parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\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 if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\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 if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\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 var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\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 panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + 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 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 = this.element.querySelector('[id=\\'' + 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 (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\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 collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.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 _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.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 for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\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: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\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 = this.getChangedPanels(removed);\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.getChangedPanels = function (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(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\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 () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', '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 var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\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 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.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\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 if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\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 args.panels = this.getChangingPanels();\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 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 this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\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 DashboardLayout.prototype.onPropertyChanged = function (newProp) {\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 if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\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 this[key] = dataObj[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","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, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\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","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","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","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","dragging","drag","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","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","closest","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","upTarget","getChangingPanels","undefined","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","panel","updatedPanel","updatedRows","getElementById","updatedHeight","getRowColumn","setHeightWidth","heightValue","entirePanelsY","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","shadowSize","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan","TimelineOrientation","TimelineAlign","TimelineItem","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","_b","cssClasses","align","haveOneSidecontent","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotContainer","dotEleCss","dotCss","DOTCONTENT","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","classArray","updateContent","updateItems","oldPropItems","_c","_d","oppositeEle","timelineItemElements","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}