@syncfusion/ej2-layouts 19.2.55 → 19.3.48

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 (103) hide show
  1. package/.eslintrc.json +1 -1
  2. package/CHANGELOG.md +10 -0
  3. package/dist/ej2-layouts.umd.min.js +2 -2
  4. package/dist/ej2-layouts.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-layouts.es2015.js +84 -164
  6. package/dist/es6/ej2-layouts.es2015.js.map +1 -1
  7. package/dist/es6/ej2-layouts.es5.js +84 -165
  8. package/dist/es6/ej2-layouts.es5.js.map +1 -1
  9. package/dist/global/ej2-layouts.min.js +2 -2
  10. package/dist/global/ej2-layouts.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/helpers/e2e/dashboardHelper.d.ts +63 -0
  13. package/helpers/e2e/dashboardHelper.js +97 -0
  14. package/helpers/e2e/index.d.ts +1 -0
  15. package/helpers/e2e/index.js +1 -0
  16. package/package.json +6 -6
  17. package/src/dashboard-layout/dashboard-layout.js +0 -6
  18. package/src/splitter/splitter-model.d.ts +1 -1
  19. package/src/splitter/splitter.d.ts +5 -1
  20. package/src/splitter/splitter.js +84 -158
  21. package/styles/avatar/_bootstrap5-dark-definition.scss +1 -0
  22. package/styles/avatar/_bootstrap5-definition.scss +25 -0
  23. package/styles/avatar/_layout.scss +5 -5
  24. package/styles/avatar/_tailwind-dark-definition.scss +1 -25
  25. package/styles/avatar/bootstrap5-dark.css +61 -0
  26. package/styles/avatar/bootstrap5-dark.scss +3 -0
  27. package/styles/avatar/bootstrap5.css +61 -0
  28. package/styles/avatar/bootstrap5.scss +3 -0
  29. package/styles/bootstrap-dark.css +8 -0
  30. package/styles/bootstrap.css +8 -0
  31. package/styles/bootstrap4.css +8 -0
  32. package/styles/bootstrap5-dark.css +1618 -0
  33. package/styles/bootstrap5-dark.scss +4 -0
  34. package/styles/bootstrap5.css +1618 -0
  35. package/styles/bootstrap5.scss +4 -0
  36. package/styles/card/_bootstrap5-dark-definition.scss +1 -0
  37. package/styles/card/_bootstrap5-definition.scss +119 -0
  38. package/styles/card/_fabric-dark-definition.scss +5 -18
  39. package/styles/card/_layout.scss +2 -2
  40. package/styles/card/_tailwind-dark-definition.scss +1 -122
  41. package/styles/card/_tailwind-definition.scss +5 -9
  42. package/styles/card/bootstrap5-dark.css +593 -0
  43. package/styles/card/bootstrap5-dark.scss +3 -0
  44. package/styles/card/bootstrap5.css +593 -0
  45. package/styles/card/bootstrap5.scss +3 -0
  46. package/styles/card/fabric-dark.css +12 -12
  47. package/styles/card/tailwind-dark.css +2 -3
  48. package/styles/card/tailwind.css +0 -1
  49. package/styles/dashboard-layout/_bootstrap5-dark-definition.scss +1 -0
  50. package/styles/dashboard-layout/_bootstrap5-definition.scss +109 -0
  51. package/styles/dashboard-layout/_layout.scss +14 -5
  52. package/styles/dashboard-layout/_tailwind-dark-definition.scss +1 -109
  53. package/styles/dashboard-layout/_tailwind-definition.scss +27 -28
  54. package/styles/dashboard-layout/_theme.scss +4 -4
  55. package/styles/dashboard-layout/bootstrap5-dark.css +393 -0
  56. package/styles/dashboard-layout/bootstrap5-dark.scss +4 -0
  57. package/styles/dashboard-layout/bootstrap5.css +393 -0
  58. package/styles/dashboard-layout/bootstrap5.scss +4 -0
  59. package/styles/dashboard-layout/icons/_bootstrap5-dark.scss +1 -0
  60. package/styles/dashboard-layout/icons/_bootstrap5.scss +81 -0
  61. package/styles/dashboard-layout/material-dark.css +3 -3
  62. package/styles/dashboard-layout/tailwind-dark.css +10 -8
  63. package/styles/dashboard-layout/tailwind.css +5 -3
  64. package/styles/fabric-dark.css +20 -12
  65. package/styles/fabric.css +8 -0
  66. package/styles/highcontrast-light.css +8 -0
  67. package/styles/highcontrast.css +8 -0
  68. package/styles/material-dark.css +19 -11
  69. package/styles/material.css +8 -0
  70. package/styles/splitter/_bootstrap5-dark-definition.scss +1 -0
  71. package/styles/splitter/_bootstrap5-definition.scss +26 -0
  72. package/styles/splitter/_tailwind-dark-definition.scss +1 -23
  73. package/styles/splitter/_tailwind-definition.scss +14 -11
  74. package/styles/splitter/bootstrap-dark.css +8 -0
  75. package/styles/splitter/bootstrap.css +8 -0
  76. package/styles/splitter/bootstrap4.css +8 -0
  77. package/styles/splitter/bootstrap5-dark.css +568 -0
  78. package/styles/splitter/bootstrap5-dark.scss +4 -0
  79. package/styles/splitter/bootstrap5.css +568 -0
  80. package/styles/splitter/bootstrap5.scss +4 -0
  81. package/styles/splitter/fabric-dark.css +8 -0
  82. package/styles/splitter/fabric.css +8 -0
  83. package/styles/splitter/highcontrast-light.css +8 -0
  84. package/styles/splitter/highcontrast.css +8 -0
  85. package/styles/splitter/icons/_bootstrap-dark.scss +12 -0
  86. package/styles/splitter/icons/_bootstrap.scss +12 -0
  87. package/styles/splitter/icons/_bootstrap4.scss +12 -0
  88. package/styles/splitter/icons/_bootstrap5-dark.scss +1 -0
  89. package/styles/splitter/icons/_bootstrap5.scss +39 -0
  90. package/styles/splitter/icons/_fabric-dark.scss +12 -0
  91. package/styles/splitter/icons/_fabric.scss +12 -0
  92. package/styles/splitter/icons/_highcontrast-light.scss +12 -0
  93. package/styles/splitter/icons/_highcontrast.scss +12 -0
  94. package/styles/splitter/icons/_material-dark.scss +12 -0
  95. package/styles/splitter/icons/_material.scss +12 -0
  96. package/styles/splitter/icons/_tailwind-dark.scss +1 -39
  97. package/styles/splitter/icons/_tailwind.scss +12 -0
  98. package/styles/splitter/material-dark.css +16 -8
  99. package/styles/splitter/material.css +8 -0
  100. package/styles/splitter/tailwind-dark.css +14 -7
  101. package/styles/splitter/tailwind.css +8 -1
  102. package/styles/tailwind-dark.css +26 -18
  103. package/styles/tailwind.css +13 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-layouts.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, isBlazor } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.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 return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n 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.preRender = function () {\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n if (!this.checkBlazor()) {\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation_1 = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation_1);\n }\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 if (!this.checkBlazor()) {\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 }\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n if (!this.checkBlazor()) {\n this.setRTL(this.enableRtl);\n }\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.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.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.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.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 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)) {\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 /**\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.checkBlazor = function () {\n return isBlazor() && this.isServerRendered;\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 _this = this;\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n var proxy;\n if (this.checkBlazor()) {\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(SPLIT_BAR)) {\n this.allBars.push(this.element.children[j]);\n }\n }\n }\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n if (!this.checkBlazor()) {\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 }\n if (this.checkBlazor()) {\n proxy = this;\n separator = this.allBars[i];\n this.updateIconClass();\n }\n if (!this.checkBlazor()) {\n this.wireClickEvents();\n }\n if (this.checkBlazor() && !isNullOrUndefined(separator)) {\n this.currentSeparator = separator;\n this.addMouseActions(separator);\n this.wireClickEvents();\n separator.addEventListener('focus', function () {\n if (document.activeElement.classList.contains('e-split-bar')) {\n proxy.currentSeparator = document.activeElement;\n proxy.currentSeparator.classList.add(SPLIT_BAR_ACTIVE);\n }\n _this.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n proxy.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n }\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 EventHandler.add(document, 'mousemove', this.onMouseMove, this);\n EventHandler.add(document, 'mouseup', this.onMouseUp, this);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.add(document, touchMoveEvent, this.onMouseMove, this);\n EventHandler.add(document, touchEndEvent, this.onMouseUp, this);\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 EventHandler.remove(document, 'mousemove', this.onMouseMove);\n EventHandler.remove(document, 'mouseup', this.onMouseUp);\n EventHandler.remove(document, touchMoveEvent, this.onMouseMove);\n EventHandler.remove(document, touchEndEvent, this.onMouseUp);\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 = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n } : {\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 = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n } : {\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 separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n if (this.checkBlazor() && this.allBars.length < 1) {\n this.allBars = selectAll('.' + separator, this.element);\n }\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 = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n } : {\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 = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n } : {\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 :\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 = isBlazor() ? {\n event: e,\n element: this.element,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n } : {\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 if (isBlazor() && !this.isStringTemplate) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), this.isStringTemplate);\n }\n else {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\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 if (!this.checkBlazor()) {\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 }\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 if (this.checkBlazor() && child[i].classList.contains(PANE)) {\n this.allPanes.push(child[i]);\n }\n else if (!this.checkBlazor()) {\n this.allPanes.push(child[i]);\n }\n if (!this.checkBlazor()) {\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 /**\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 if (!this.checkBlazor()) {\n _super.prototype.destroy.call(this);\n }\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n if (this.checkBlazor()) {\n var splitNodes = this.element.children;\n for (var i = splitNodes.length - 1; i >= 0; i--) {\n detach(splitNodes[i]);\n }\n }\n else {\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 }\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 else if (this.elementX + this.elementWidth + dX > this.maxLeft) {\n currentX = this.maxLeft - this.elementX - 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 for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[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.updatePanelLayout(ele, cellInstance);\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 this.dragobj.enableScrollHandler = true;\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","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","allPanes","paneOrder","separatorOrder","allBars","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","border","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","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","add","preRender","onReportWindowSize","reportWindowSize","bind","wrapper","cloneNode","wrapperParent","parentElement","checkBlazor","removeClass","orientation_1","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","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","triggerResizing","collapsible","expand","collapse","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","min","max","content","paneAPI","slice","forEach","el","detach","restoreElem","isBlazor","isServerRendered","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","getComputedStyle","marginLeft","marginTop","marginBottom","diff","minValue","paneMinRange","updatePane","flexPane","convertPixelToNumber","toString","sizeDiff","isPercent","convertPixelToPercentage","wireResizeEvents","onMouseMove","onMouseUp","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","prevPaneIndex","nextPaneIndex","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","preventDefault","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","top","window","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","isStringTemplate","id","childElement","nodeName","destroy","isDestroyed","attributes","splitNodes","refreshing","clearTemplate","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","drag","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","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","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","cellInstance","removeResizeClasses","checkDragging","sortPanels","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","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","this_3","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","enableScrollHandler","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","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-layouts.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 var _this = _super.call(this, options, element) || this;\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 return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n 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.preRender = function () {\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 :\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 for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[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","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","allPanes","paneOrder","separatorOrder","allBars","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","border","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","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","add","preRender","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","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","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","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","top","window","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","drag","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","panelContent","disablePanel","header","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","cellInstance","removeResizeClasses","checkDragging","sortPanels","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","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","this_3","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","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","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan"],"mappings":"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"}