@syncfusion/ej2-layouts 25.1.35 → 25.1.37

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