@syncfusion/ej2-layouts 20.1.47 → 20.1.61

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.
Files changed (88) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/ej2-layouts.umd.min.js +2 -2
  3. package/dist/ej2-layouts.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-layouts.es2015.js +24 -17
  5. package/dist/es6/ej2-layouts.es2015.js.map +1 -1
  6. package/dist/es6/ej2-layouts.es5.js +24 -17
  7. package/dist/es6/ej2-layouts.es5.js.map +1 -1
  8. package/dist/global/ej2-layouts.min.js +2 -2
  9. package/dist/global/ej2-layouts.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +6 -6
  12. package/src/dashboard-layout/dashboard-layout.js +8 -2
  13. package/src/splitter/splitter.js +16 -15
  14. package/styles/avatar/bootstrap-dark.css +1 -7
  15. package/styles/avatar/bootstrap.css +1 -7
  16. package/styles/avatar/bootstrap4.css +1 -7
  17. package/styles/avatar/bootstrap5-dark.css +1 -7
  18. package/styles/avatar/bootstrap5.css +1 -7
  19. package/styles/avatar/fabric-dark.css +1 -7
  20. package/styles/avatar/fabric.css +1 -7
  21. package/styles/avatar/fluent-dark.css +1 -7
  22. package/styles/avatar/fluent.css +1 -7
  23. package/styles/avatar/highcontrast-light.css +1 -7
  24. package/styles/avatar/highcontrast.css +1 -7
  25. package/styles/avatar/material-dark.css +1 -7
  26. package/styles/avatar/material.css +1 -7
  27. package/styles/avatar/tailwind-dark.css +1 -7
  28. package/styles/avatar/tailwind.css +1 -7
  29. package/styles/bootstrap-dark.css +43 -312
  30. package/styles/bootstrap.css +43 -312
  31. package/styles/bootstrap4.css +43 -314
  32. package/styles/bootstrap5-dark.css +41 -309
  33. package/styles/bootstrap5.css +41 -309
  34. package/styles/card/bootstrap-dark.css +1 -85
  35. package/styles/card/bootstrap.css +1 -85
  36. package/styles/card/bootstrap4.css +1 -87
  37. package/styles/card/bootstrap5-dark.css +1 -85
  38. package/styles/card/bootstrap5.css +1 -85
  39. package/styles/card/fabric-dark.css +1 -85
  40. package/styles/card/fabric.css +1 -87
  41. package/styles/card/fluent-dark.css +1 -85
  42. package/styles/card/fluent.css +1 -85
  43. package/styles/card/highcontrast-light.css +1 -85
  44. package/styles/card/highcontrast.css +1 -87
  45. package/styles/card/material-dark.css +1 -85
  46. package/styles/card/material.css +1 -85
  47. package/styles/card/tailwind-dark.css +1 -87
  48. package/styles/card/tailwind.css +1 -87
  49. package/styles/dashboard-layout/bootstrap-dark.css +28 -116
  50. package/styles/dashboard-layout/bootstrap.css +28 -116
  51. package/styles/dashboard-layout/bootstrap4.css +28 -116
  52. package/styles/dashboard-layout/bootstrap5-dark.css +28 -117
  53. package/styles/dashboard-layout/bootstrap5.css +28 -117
  54. package/styles/dashboard-layout/fabric-dark.css +28 -116
  55. package/styles/dashboard-layout/fabric.css +28 -116
  56. package/styles/dashboard-layout/fluent-dark.css +28 -117
  57. package/styles/dashboard-layout/fluent.css +28 -117
  58. package/styles/dashboard-layout/highcontrast-light.css +16 -85
  59. package/styles/dashboard-layout/highcontrast.css +28 -115
  60. package/styles/dashboard-layout/material-dark.css +28 -116
  61. package/styles/dashboard-layout/material.css +28 -116
  62. package/styles/dashboard-layout/tailwind-dark.css +28 -119
  63. package/styles/dashboard-layout/tailwind.css +28 -119
  64. package/styles/fabric-dark.css +43 -312
  65. package/styles/fabric.css +43 -314
  66. package/styles/fluent-dark.css +41 -309
  67. package/styles/fluent.css +41 -309
  68. package/styles/highcontrast-light.css +31 -281
  69. package/styles/highcontrast.css +43 -313
  70. package/styles/material-dark.css +53 -322
  71. package/styles/material.css +43 -312
  72. package/styles/splitter/bootstrap-dark.css +16 -107
  73. package/styles/splitter/bootstrap.css +16 -107
  74. package/styles/splitter/bootstrap4.css +16 -107
  75. package/styles/splitter/bootstrap5-dark.css +14 -103
  76. package/styles/splitter/bootstrap5.css +14 -103
  77. package/styles/splitter/fabric-dark.css +16 -107
  78. package/styles/splitter/fabric.css +16 -107
  79. package/styles/splitter/fluent-dark.css +14 -103
  80. package/styles/splitter/fluent.css +14 -103
  81. package/styles/splitter/highcontrast-light.css +16 -107
  82. package/styles/splitter/highcontrast.css +16 -107
  83. package/styles/splitter/material-dark.css +26 -117
  84. package/styles/splitter/material.css +16 -107
  85. package/styles/splitter/tailwind-dark.css +14 -103
  86. package/styles/splitter/tailwind.css +14 -103
  87. package/styles/tailwind-dark.css +41 -313
  88. package/styles/tailwind.css +41 -313
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n return _super.call(this, options, element) || 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 for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n var min;\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n var proxy;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0; j < this.allBars.length; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!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; j < flexPaneIndexes.length; j++) {\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 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.allPanes[i].offsetWidth < 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.allPanes[i].offsetWidth;\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePane.offsetWidth + sizeDiff) + '%'\n : (updatePane.offsetWidth + sizeDiff) + 'px';\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPane.offsetWidth - sizeDiff) + '%' : (flexPane.offsetWidth - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n var totalWidth = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n if (totalWidth > this.element.offsetWidth) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n 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 else {\n panes[i].style.flexGrow = '';\n }\n if (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\n if (visiblePane && !this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.convertPixelToNumber(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 this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n if (!(this.allPanes.length > 2)) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n td.setAttribute('id', '' + j);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n this.elementWidth += currentX;\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + item.sizeX > this.columns) {\n item.sizeX = item.sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (item.minSizeX) * this.getCellSize()[0];\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];\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n heightValue = ((this.maxRow()) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n });\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][k] = source[i][k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","call","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","_this","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","convertPixelToPercentage","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","flexGrow","staticPane","status","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","previousElementSibling","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","currentIndex","array","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","isReact","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","clearTemplate","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToColumns","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","len","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","filter","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","k","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_6","this_4","localPanel","pan"],"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"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n return _super.call(this, options, element) || 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 for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n var min;\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n var proxy;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0; j < this.allBars.length; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!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; j < flexPaneIndexes.length; j++) {\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 if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n var totalWidth = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n if (totalWidth > this.element.offsetWidth) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.convertPixelToNumber(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 this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n if (!(this.allPanes.length > 2)) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n td.setAttribute('id', '' + j);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n this.elementWidth += currentX;\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + item.sizeX > this.columns) {\n item.sizeX = item.sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (item.minSizeX) * this.getCellSize()[0];\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];\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n });\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][k] = source[i][k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","call","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","_this","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","flexGrow","staticPane","status","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","previousElementSibling","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","currentIndex","array","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","isReact","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","clearTemplate","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToColumns","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","len","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","filter","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","entirePanelsY","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","k","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_6","this_4","localPanel","pan"],"mappings":"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"}