@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.umd.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":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","RTL","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","ChildProperty","Property","apply","Component","Splitter","onPropertyChanged","newProp","oldProp","element","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","flexPaneIndexes","flexCount","size","innerText","staticPaneWidth","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","name","addClass","Browser","info","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","previousFlexBasis","nextFlexBasis","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","updatePaneFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","getSeparatorIndex","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","item","enableHtmlSanitizer","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","paneAPI","max","slice","call","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","_this","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","eventName","clonedEle","parentNode","toLowerCase","wireClickEvents","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","sizeDiff","updatePaneOffset","flexPaneOffset","updatePane","flexPane","isPercent","convertPixelToPercentage","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","otherNextPaneIndex","collapsecount","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","getCollapseCount","otherPrevPaneIndex","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","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","offsetValue","percentage","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","validateDraggedPosition","flexPaneCount","separatorNewPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","allFlexiblePanes","isStaticPanes","middlePaneIndex","validateMinRange","paneCurrentWidth","validatedVal","paneMinDimensions","validateMaxRange","paneMaxRange","paneMaxDimensions","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","templateFUN","templateFn","outerHTML","compile","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","options","needsID","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","panelID","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","isInlineRendering","panelElement","getInlinePanels","maxCol","panel_1","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","rows","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","headerHeight","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","panelProp","isUndefined","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","moveEventName","upEventName","closest","downHandler","lastMouseX","lastMouseY","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","resizeCalled","panelsInitialModel","cloneModels","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","maxTop","maxRows","handleArray","handleClass","diffX","mouseX","mouseY","diffY","mOffY","mOffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","minTop","getMinWidth","getMaxWidth","minLeft","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","args","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","panelsSizeY","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","this_1","_loop_2","panel","updatedPanel","isPanelRemoved","updatedRows","updatedHeight","getElementById","resizeHeight","getRowColumn","setHeightWidth","entirePanelsY","heightValue","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","previous","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","eleSizeX","topAdjustable","eleCol","leftSpacing","getRowElements","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","this_2","_loop_4","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","movePanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","collisionInstance","swappedElements","collisionItemsRow","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","cellHeight","cellWidth","heigthValue","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","removeAllCalled","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","_loop_5","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","shadowSize","eventVar","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","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","mergePersistPanelData","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","_loop_6","localPanel","pan","setValue","OPPOSITECONTENT","DOTCONTENT","CONTENT","VERTICAL","HORIZONTAL","TIMELINEREVERSE","TEMPLATE","TimelineItem","TimelineOrientation","TimelineAlign","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","cssClasses","_b","align","haveOneSidecontent","dotContainer","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotEleCss","dotCss","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","updateContent","updateItems","oldPropItems","oppositeEle","timelineItemElements","_c","_d","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js","../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":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","RTL","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","ChildProperty","Property","apply","Component","Splitter","onPropertyChanged","newProp","oldProp","element","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","flexPaneIndexes","flexCount","size","innerText","staticPaneWidth","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","name","addClass","Browser","info","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","previousFlexBasis","nextFlexBasis","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","updatePaneFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","getSeparatorIndex","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","item","enableHtmlSanitizer","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","paneAPI","max","slice","call","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","_this","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","eventName","clonedEle","parentNode","toLowerCase","wireClickEvents","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","sizeDiff","updatePaneOffset","flexPaneOffset","updatePane","flexPane","isPercent","convertPixelToPercentage","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","otherNextPaneIndex","collapsecount","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","getCollapseCount","otherPrevPaneIndex","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","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","offsetValue","percentage","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","validateDraggedPosition","flexPaneCount","separatorNewPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","allFlexiblePanes","isStaticPanes","middlePaneIndex","validateMinRange","paneCurrentWidth","validatedVal","paneMinDimensions","validateMaxRange","paneMaxRange","paneMaxDimensions","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","templateFUN","templateFn","outerHTML","compile","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","options","needsID","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","panelID","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","isInlineRendering","panelElement","getInlinePanels","maxCol","panel_1","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","rows","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","headerHeight","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","panelProp","isUndefined","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","moveEventName","upEventName","closest","downHandler","lastMouseX","lastMouseY","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","resizeCalled","panelsInitialModel","cloneModels","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","maxTop","maxRows","handleArray","handleClass","diffX","mouseX","mouseY","diffY","mOffY","mOffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","minTop","getMinWidth","getMaxWidth","minLeft","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","args","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","panelsSizeY","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","this_1","_loop_2","panel","updatedPanel","isPanelRemoved","updatedRows","updatedHeight","getElementById","resizeHeight","getRowColumn","setHeightWidth","entirePanelsY","heightValue","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","previous","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","eleSizeX","topAdjustable","eleCol","leftSpacing","getRowElements","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","this_2","_loop_4","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","movePanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","collisionInstance","swappedElements","collisionItemsRow","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","cellHeight","cellWidth","heigthValue","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","removeAllCalled","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","_loop_5","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","shadowSize","eventVar","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","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","mergePersistPanelData","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","_loop_6","localPanel","pan","setValue","OPPOSITECONTENT","DOTCONTENT","CONTENT","VERTICAL","HORIZONTAL","TIMELINEREVERSE","TEMPLATE","TimelineItem","TimelineOrientation","TimelineAlign","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","cssClasses","_b","align","haveOneSidecontent","dotContainer","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotEleCss","dotCss","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","updateContent","updateItems","oldPropItems","oppositeEle","timelineItemElements","_c","_d","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}