@syncfusion/ej2-layouts 33.1.47 → 33.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ej2-layouts.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js.map +1 -1
- package/dist/es6/ej2-layouts.es2015.js +4 -2
- package/dist/es6/ej2-layouts.es2015.js.map +1 -1
- package/dist/es6/ej2-layouts.es5.js +4 -2
- package/dist/es6/ej2-layouts.es5.js.map +1 -1
- package/dist/global/ej2-layouts.min.js +2 -2
- package/dist/global/ej2-layouts.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +2 -2
- package/src/splitter/splitter.d.ts +1 -0
- package/src/splitter/splitter.js +4 -2
|
@@ -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, L10n } 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;\nvar splitterDefaultLocale = {\n 'ToggleNavigation': 'Toggle navigation'\n};\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'locale':\n this.localeSetModelOption(newProp);\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.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, this.locale);\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var _this = this;\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 var toggleLabel = this.getLocaleText('ToggleNavigation');\n arrow1.setAttribute('aria-label', toggleLabel);\n arrow2.setAttribute('aria-label', toggleLabel);\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\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.delegateFocusHandler = function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n _this.currentSeparator = separator;\n _this.getPaneDetails();\n };\n separator.delegateBlurHandler = function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n };\n separator.addEventListener('focus', separator.delegateFocusHandler);\n separator.addEventListener('blur', separator.delegateBlurHandler);\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.delegateMouseEnterHandler = function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n };\n separator.delegateMouseLeaveHandler = function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n };\n separator.delegateMouseOutHandler = function () {\n clearTimeout(hoverTimeOut);\n };\n separator.delegateMouseOverHandler = function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n };\n separator.addEventListener('mouseenter', separator.delegateMouseEnterHandler);\n separator.addEventListener('mouseleave', separator.delegateMouseLeaveHandler);\n separator.addEventListener('mouseout', separator.delegateMouseOutHandler);\n separator.addEventListener('mouseover', separator.delegateMouseOverHandler);\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n if (draggedPos > nextPaneRange - pane2MinSize) {\n if (isNullOrUndefined(pane1MaxSize) || validatedSize !== prePaneRange + pane1MaxSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n if (isNullOrUndefined(pane2MaxSize) || validatedSize !== nextPaneRange - pane2MaxSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n if (separators[i].delegateFocusHandler) {\n separators[i].removeEventListener('focus', separators[i].delegateFocusHandler);\n separators[i].delegateFocusHandler = null;\n }\n if (separators[i].delegateBlurHandler) {\n separators[i].removeEventListener('blur', separators[i].delegateBlurHandler);\n separators[i].delegateBlurHandler = null;\n }\n if (separators[i].delegateMouseEnterHandler) {\n separators[i].removeEventListener('mouseenter', separators[i].delegateMouseEnterHandler);\n separators[i].delegateMouseEnterHandler = null;\n }\n if (separators[i].delegateMouseLeaveHandler) {\n separators[i].removeEventListener('mouseleave', separators[i].delegateMouseLeaveHandler);\n separators[i].delegateMouseLeaveHandler = null;\n }\n if (separators[i].delegateMouseOutHandler) {\n separators[i].removeEventListener('mouseout', separators[i].delegateMouseOutHandler);\n separators[i].delegateMouseOutHandler = null;\n }\n if (separators[i].delegateMouseOverHandler) {\n separators[i].removeEventListener('mouseover', separators[i].delegateMouseOverHandler);\n separators[i].delegateMouseOverHandler = null;\n }\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n Splitter.prototype.getLocaleText = function (text) {\n var locale = this.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n };\n Splitter.prototype.localeSetModelOption = function (newProp) {\n var newLocale = newProp && newProp.locale && typeof newProp.locale === 'object' ? newProp.locale : this.locale;\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, newLocale);\n this.refresh();\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow >= eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = this.getChangedPanels(removed);\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.getChangedPanels = function (removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', 'e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n args.panels = this.getChangingPanels();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","RTL","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","splitterDefaultLocale","ToggleNavigation","PaneProperties","ChildProperty","Property","apply","Component","Splitter","onPropertyChanged","newProp","oldProp","element","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","localeSetModelOption","style","flexBasis","flexPaneIndexes","flexCount","size","innerText","staticPaneWidth","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","localeObj","L10n","getModuleName","locale","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","name","addClass","Browser","info","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","previousFlexBasis","nextFlexBasis","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","updatePaneFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","getSeparatorIndex","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","item","enableHtmlSanitizer","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","paneAPI","max","slice","call","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","_this","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","toggleLabel","getLocaleText","addMouseActions","delegateFocusHandler","getPaneDetails","delegateBlurHandler","eventName","clonedEle","parentNode","toLowerCase","wireClickEvents","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","delegateMouseEnterHandler","setTimeout","delegateMouseLeaveHandler","clearTimeout","delegateMouseOutHandler","delegateMouseOverHandler","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","sizeDiff","updatePaneOffset","flexPaneOffset","updatePane","flexPane","isPercent","convertPixelToPercentage","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","otherNextPaneIndex","collapsecount","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","getCollapseCount","otherPrevPaneIndex","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","offsetValue","percentage","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","validateDraggedPosition","flexPaneCount","separatorNewPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","allFlexiblePanes","isStaticPanes","middlePaneIndex","validateMinRange","paneCurrentWidth","validatedVal","paneMinDimensions","validateMaxRange","paneMaxRange","paneMaxDimensions","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFUN","templateFn","outerHTML","compile","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","text","getConstant","newLocale","refresh","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","options","needsID","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","panelID","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","isInlineRendering","panelElement","getInlinePanels","maxCol","panel_1","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","rows","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","headerHeight","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","panelProp","isUndefined","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","moveEventName","upEventName","closest","downHandler","lastMouseX","lastMouseY","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","resizeCalled","panelsInitialModel","cloneModels","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","maxTop","maxRows","handleArray","handleClass","diffX","mouseX","mouseY","diffY","mOffY","mOffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","minTop","getMinWidth","getMaxWidth","minLeft","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","args","upTarget","getChangingPanels","undefined","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","panelsSizeY","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","this_1","_loop_2","panel","updatedPanel","isPanelRemoved","updatedRows","updatedHeight","getElementById","resizeHeight","getRowColumn","setHeightWidth","entirePanelsY","heightValue","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","previous","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","eleSizeX","topAdjustable","eleCol","leftSpacing","getRowElements","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","this_2","_loop_4","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","movePanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","collisionInstance","swappedElements","collisionItemsRow","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","cellHeight","cellWidth","heigthValue","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","removeAllCalled","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","_loop_5","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","shadowSize","eventVar","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","mergePersistPanelData","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","_loop_6","localPanel","pan","setValue","OPPOSITECONTENT","DOTCONTENT","CONTENT","VERTICAL","HORIZONTAL","TIMELINEREVERSE","TEMPLATE","TimelineItem","TimelineOrientation","TimelineAlign","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","cssClasses","_b","align","haveOneSidecontent","dotContainer","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotEleCss","dotCss","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","updateContent","updateItems","oldPropItems","oppositeEle","timelineItemElements","_c","_d","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
|
|
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, L10n } 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;\nvar splitterDefaultLocale = {\n 'ToggleNavigation': 'Toggle navigation'\n};\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'locale':\n this.localeSetModelOption(newProp);\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.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, this.locale);\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.documentClickHandler = this.onDocumentClick.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.documentClickHandler);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var _this = this;\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 var toggleLabel = this.getLocaleText('ToggleNavigation');\n arrow1.setAttribute('aria-label', toggleLabel);\n arrow2.setAttribute('aria-label', toggleLabel);\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\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.delegateFocusHandler = function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n _this.currentSeparator = separator;\n _this.getPaneDetails();\n };\n separator.delegateBlurHandler = function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n };\n separator.addEventListener('focus', separator.delegateFocusHandler);\n separator.addEventListener('blur', separator.delegateBlurHandler);\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.delegateMouseEnterHandler = function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n };\n separator.delegateMouseLeaveHandler = function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n };\n separator.delegateMouseOutHandler = function () {\n clearTimeout(hoverTimeOut);\n };\n separator.delegateMouseOverHandler = function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n };\n separator.addEventListener('mouseenter', separator.delegateMouseEnterHandler);\n separator.addEventListener('mouseleave', separator.delegateMouseLeaveHandler);\n separator.addEventListener('mouseout', separator.delegateMouseOutHandler);\n separator.addEventListener('mouseover', separator.delegateMouseOverHandler);\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n if (draggedPos > nextPaneRange - pane2MinSize) {\n if (isNullOrUndefined(pane1MaxSize) || validatedSize !== prePaneRange + pane1MaxSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n if (isNullOrUndefined(pane2MaxSize) || validatedSize !== nextPaneRange - pane2MaxSize) {\n validatedSize = prePaneRange + pane1MinSize;\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.documentClickHandler);\n this.documentClickHandler = null;\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n if (separators[i].delegateFocusHandler) {\n separators[i].removeEventListener('focus', separators[i].delegateFocusHandler);\n separators[i].delegateFocusHandler = null;\n }\n if (separators[i].delegateBlurHandler) {\n separators[i].removeEventListener('blur', separators[i].delegateBlurHandler);\n separators[i].delegateBlurHandler = null;\n }\n if (separators[i].delegateMouseEnterHandler) {\n separators[i].removeEventListener('mouseenter', separators[i].delegateMouseEnterHandler);\n separators[i].delegateMouseEnterHandler = null;\n }\n if (separators[i].delegateMouseLeaveHandler) {\n separators[i].removeEventListener('mouseleave', separators[i].delegateMouseLeaveHandler);\n separators[i].delegateMouseLeaveHandler = null;\n }\n if (separators[i].delegateMouseOutHandler) {\n separators[i].removeEventListener('mouseout', separators[i].delegateMouseOutHandler);\n separators[i].delegateMouseOutHandler = null;\n }\n if (separators[i].delegateMouseOverHandler) {\n separators[i].removeEventListener('mouseover', separators[i].delegateMouseOverHandler);\n separators[i].delegateMouseOverHandler = null;\n }\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n Splitter.prototype.getLocaleText = function (text) {\n var locale = this.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n };\n Splitter.prototype.localeSetModelOption = function (newProp) {\n var newLocale = newProp && newProp.locale && typeof newProp.locale === 'object' ? newProp.locale : this.locale;\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, newLocale);\n this.refresh();\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow >= eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = this.getChangedPanels(removed);\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.getChangedPanels = function (removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', 'e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n args.panels = this.getChangingPanels();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","RTL","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","splitterDefaultLocale","ToggleNavigation","PaneProperties","ChildProperty","Property","apply","Component","Splitter","onPropertyChanged","newProp","oldProp","element","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","localeSetModelOption","style","flexBasis","flexPaneIndexes","flexCount","size","innerText","staticPaneWidth","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","localeObj","L10n","getModuleName","locale","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","documentClickHandler","onDocumentClick","wrapper","cloneNode","wrapperParent","parentElement","removeClass","name","addClass","Browser","info","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","previousFlexBasis","nextFlexBasis","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","updatePaneFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","getSeparatorIndex","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","item","enableHtmlSanitizer","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","paneAPI","max","slice","call","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","_this","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","toggleLabel","getLocaleText","addMouseActions","delegateFocusHandler","getPaneDetails","delegateBlurHandler","eventName","clonedEle","parentNode","toLowerCase","wireClickEvents","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","delegateMouseEnterHandler","setTimeout","delegateMouseLeaveHandler","clearTimeout","delegateMouseOutHandler","delegateMouseOverHandler","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","sizeDiff","updatePaneOffset","flexPaneOffset","updatePane","flexPane","isPercent","convertPixelToPercentage","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","otherNextPaneIndex","collapsecount","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","getCollapseCount","otherPrevPaneIndex","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","offsetValue","percentage","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","validateDraggedPosition","flexPaneCount","separatorNewPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","allFlexiblePanes","isStaticPanes","middlePaneIndex","validateMinRange","paneCurrentWidth","validatedVal","paneMinDimensions","validateMaxRange","paneMaxRange","paneMaxDimensions","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFUN","templateFn","outerHTML","compile","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","text","getConstant","newLocale","refresh","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","options","needsID","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","panelID","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","isInlineRendering","panelElement","getInlinePanels","maxCol","panel_1","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","rows","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","headerHeight","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","panelProp","isUndefined","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","moveEventName","upEventName","closest","downHandler","lastMouseX","lastMouseY","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","resizeCalled","panelsInitialModel","cloneModels","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","maxTop","maxRows","handleArray","handleClass","diffX","mouseX","mouseY","diffY","mOffY","mOffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","minTop","getMinWidth","getMaxWidth","minLeft","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","args","upTarget","getChangingPanels","undefined","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","panelsSizeY","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","this_1","_loop_2","panel","updatedPanel","isPanelRemoved","updatedRows","updatedHeight","getElementById","resizeHeight","getRowColumn","setHeightWidth","entirePanelsY","heightValue","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","previous","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","eleSizeX","topAdjustable","eleCol","leftSpacing","getRowElements","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","this_2","_loop_4","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","movePanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","collisionInstance","swappedElements","collisionItemsRow","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","cellHeight","cellWidth","heigthValue","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","removeAllCalled","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","_loop_5","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","shadowSize","eventVar","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","mergePersistPanelData","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","_loop_6","localPanel","pan","setValue","OPPOSITECONTENT","DOTCONTENT","CONTENT","VERTICAL","HORIZONTAL","TIMELINEREVERSE","TEMPLATE","TimelineItem","TimelineOrientation","TimelineAlign","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","cssClasses","_b","align","haveOneSidecontent","dotContainer","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotEleCss","dotCss","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","updateContent","updateItems","oldPropItems","oppositeEle","timelineItemElements","_c","_d","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
|