@syncfusion/ej2-layouts 25.2.3 → 26.1.38

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 (177) hide show
  1. package/.eslintrc.json +3 -2
  2. package/dist/ej2-layouts.min.js +2 -2
  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 +215 -140
  6. package/dist/es6/ej2-layouts.es2015.js.map +1 -1
  7. package/dist/es6/ej2-layouts.es5.js +243 -167
  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/package.json +7 -7
  13. package/src/dashboard-layout/dashboard-layout.d.ts +2 -2
  14. package/src/dashboard-layout/dashboard-layout.js +55 -76
  15. package/src/splitter/splitter.js +81 -41
  16. package/src/timeline/timeline-model.d.ts +5 -5
  17. package/src/timeline/timeline.d.ts +6 -3
  18. package/src/timeline/timeline.js +107 -33
  19. package/styles/avatar/_bootstrap5.3-definition.scss +26 -0
  20. package/styles/avatar/_fluent2-definition.scss +28 -0
  21. package/styles/avatar/_layout.scss +22 -18
  22. package/styles/avatar/_material3-definition.scss +0 -7
  23. package/styles/avatar/bootstrap-dark.css +7 -4
  24. package/styles/avatar/bootstrap.css +7 -4
  25. package/styles/avatar/bootstrap4.css +7 -4
  26. package/styles/avatar/bootstrap5-dark.css +13 -10
  27. package/styles/avatar/bootstrap5.css +13 -10
  28. package/styles/avatar/fabric-dark.css +7 -4
  29. package/styles/avatar/fabric.css +7 -4
  30. package/styles/avatar/fluent-dark.css +11 -8
  31. package/styles/avatar/fluent.css +11 -8
  32. package/styles/avatar/fluent2.css +1097 -0
  33. package/styles/avatar/fluent2.scss +3 -0
  34. package/styles/avatar/highcontrast-light.css +7 -4
  35. package/styles/avatar/highcontrast.css +7 -4
  36. package/styles/avatar/material-dark.css +7 -4
  37. package/styles/avatar/material.css +7 -4
  38. package/styles/avatar/material3-dark.css +12 -9
  39. package/styles/avatar/material3.css +12 -9
  40. package/styles/avatar/tailwind-dark.css +11 -8
  41. package/styles/avatar/tailwind.css +11 -8
  42. package/styles/bootstrap-dark.css +359 -197
  43. package/styles/bootstrap-dark.scss +14 -5
  44. package/styles/bootstrap.css +359 -197
  45. package/styles/bootstrap.scss +14 -5
  46. package/styles/bootstrap4.css +357 -196
  47. package/styles/bootstrap4.scss +14 -5
  48. package/styles/bootstrap5-dark.css +370 -207
  49. package/styles/bootstrap5-dark.scss +14 -5
  50. package/styles/bootstrap5.css +370 -207
  51. package/styles/bootstrap5.scss +14 -5
  52. package/styles/card/_bootstrap5.3-definition.scss +125 -0
  53. package/styles/card/_fluent2-definition.scss +123 -0
  54. package/styles/card/_layout.scss +13 -4
  55. package/styles/card/_material3-definition.scss +0 -13
  56. package/styles/card/_theme.scss +4 -16
  57. package/styles/card/bootstrap-dark.css +95 -52
  58. package/styles/card/bootstrap.css +95 -52
  59. package/styles/card/bootstrap4.css +95 -52
  60. package/styles/card/bootstrap5-dark.css +95 -52
  61. package/styles/card/bootstrap5.css +95 -52
  62. package/styles/card/fabric-dark.css +95 -52
  63. package/styles/card/fabric.css +95 -52
  64. package/styles/card/fluent-dark.css +99 -54
  65. package/styles/card/fluent.css +99 -54
  66. package/styles/card/fluent2.css +1593 -0
  67. package/styles/card/fluent2.scss +3 -0
  68. package/styles/card/highcontrast-light.css +95 -52
  69. package/styles/card/highcontrast.css +95 -52
  70. package/styles/card/material-dark.css +95 -52
  71. package/styles/card/material.css +97 -53
  72. package/styles/card/material3-dark.css +99 -53
  73. package/styles/card/material3.css +99 -53
  74. package/styles/card/tailwind-dark.css +95 -52
  75. package/styles/card/tailwind.css +95 -52
  76. package/styles/dashboard-layout/_bootstrap5.3-definition.scss +108 -0
  77. package/styles/dashboard-layout/_fluent2-definition.scss +111 -0
  78. package/styles/dashboard-layout/_highcontrast-definition.scss +1 -1
  79. package/styles/dashboard-layout/_layout.scss +62 -60
  80. package/styles/dashboard-layout/_material3-definition.scss +0 -47
  81. package/styles/dashboard-layout/_theme.scss +19 -32
  82. package/styles/dashboard-layout/bootstrap-dark.css +41 -42
  83. package/styles/dashboard-layout/bootstrap.css +41 -42
  84. package/styles/dashboard-layout/bootstrap4.css +41 -42
  85. package/styles/dashboard-layout/bootstrap5-dark.css +48 -47
  86. package/styles/dashboard-layout/bootstrap5.css +48 -47
  87. package/styles/dashboard-layout/fabric-dark.css +41 -42
  88. package/styles/dashboard-layout/fabric.css +41 -42
  89. package/styles/dashboard-layout/fluent-dark.css +46 -46
  90. package/styles/dashboard-layout/fluent.css +46 -46
  91. package/styles/dashboard-layout/fluent2.css +1336 -0
  92. package/styles/dashboard-layout/fluent2.scss +4 -0
  93. package/styles/dashboard-layout/highcontrast-light.css +39 -41
  94. package/styles/dashboard-layout/highcontrast.css +43 -42
  95. package/styles/dashboard-layout/icons/_bootstrap5.3.scss +80 -0
  96. package/styles/dashboard-layout/icons/_fluent2.scss +80 -0
  97. package/styles/dashboard-layout/material-dark.css +41 -42
  98. package/styles/dashboard-layout/material.css +41 -42
  99. package/styles/dashboard-layout/material3-dark.css +48 -47
  100. package/styles/dashboard-layout/material3.css +48 -47
  101. package/styles/dashboard-layout/tailwind-dark.css +57 -55
  102. package/styles/dashboard-layout/tailwind.css +57 -55
  103. package/styles/fabric-dark.css +359 -197
  104. package/styles/fabric-dark.scss +14 -5
  105. package/styles/fabric.css +359 -197
  106. package/styles/fabric.scss +14 -5
  107. package/styles/fluent-dark.css +370 -206
  108. package/styles/fluent-dark.scss +14 -5
  109. package/styles/fluent.css +370 -206
  110. package/styles/fluent.scss +14 -5
  111. package/styles/fluent2.css +2803 -0
  112. package/styles/fluent2.scss +14 -0
  113. package/styles/highcontrast-light.css +357 -196
  114. package/styles/highcontrast-light.scss +13 -5
  115. package/styles/highcontrast.css +361 -197
  116. package/styles/highcontrast.scss +14 -5
  117. package/styles/material-dark.css +357 -196
  118. package/styles/material-dark.scss +14 -5
  119. package/styles/material.css +359 -197
  120. package/styles/material.scss +14 -5
  121. package/styles/material3-dark.css +370 -204
  122. package/styles/material3-dark.scss +14 -5
  123. package/styles/material3.css +370 -204
  124. package/styles/material3.scss +14 -5
  125. package/styles/splitter/_bootstrap5.3-definition.scss +31 -0
  126. package/styles/splitter/_fluent2-definition.scss +31 -0
  127. package/styles/splitter/_layout.scss +0 -4
  128. package/styles/splitter/_material3-definition.scss +0 -7
  129. package/styles/splitter/_theme.scss +0 -4
  130. package/styles/splitter/bootstrap-dark.css +115 -59
  131. package/styles/splitter/bootstrap.css +115 -59
  132. package/styles/splitter/bootstrap4.css +113 -58
  133. package/styles/splitter/bootstrap5-dark.css +113 -58
  134. package/styles/splitter/bootstrap5.css +113 -58
  135. package/styles/splitter/fabric-dark.css +115 -59
  136. package/styles/splitter/fabric.css +115 -59
  137. package/styles/splitter/fluent-dark.css +113 -58
  138. package/styles/splitter/fluent.css +113 -58
  139. package/styles/splitter/fluent2.css +1578 -0
  140. package/styles/splitter/fluent2.scss +4 -0
  141. package/styles/splitter/highcontrast-light.css +115 -59
  142. package/styles/splitter/highcontrast.css +115 -59
  143. package/styles/splitter/icons/_bootstrap5.3.scss +39 -0
  144. package/styles/splitter/icons/_fluent2.scss +39 -0
  145. package/styles/splitter/material-dark.css +113 -58
  146. package/styles/splitter/material.css +113 -58
  147. package/styles/splitter/material3-dark.css +114 -59
  148. package/styles/splitter/material3.css +114 -59
  149. package/styles/splitter/tailwind-dark.css +113 -58
  150. package/styles/splitter/tailwind.css +113 -58
  151. package/styles/tailwind-dark.css +377 -213
  152. package/styles/tailwind-dark.scss +14 -5
  153. package/styles/tailwind.css +377 -213
  154. package/styles/tailwind.scss +14 -5
  155. package/styles/timeline/_bootstrap5.3-definition.scss +18 -0
  156. package/styles/timeline/_fluent2-definition.scss +18 -0
  157. package/styles/timeline/_layout.scss +46 -7
  158. package/styles/timeline/bootstrap-dark.css +99 -39
  159. package/styles/timeline/bootstrap.css +99 -39
  160. package/styles/timeline/bootstrap4.css +99 -39
  161. package/styles/timeline/bootstrap5-dark.css +99 -39
  162. package/styles/timeline/bootstrap5.css +99 -39
  163. package/styles/timeline/fabric-dark.css +99 -39
  164. package/styles/timeline/fabric.css +99 -39
  165. package/styles/timeline/fluent-dark.css +99 -39
  166. package/styles/timeline/fluent.css +99 -39
  167. package/styles/timeline/fluent2.css +1332 -0
  168. package/styles/timeline/fluent2.scss +3 -0
  169. package/styles/timeline/highcontrast-light.css +99 -39
  170. package/styles/timeline/highcontrast.css +99 -39
  171. package/styles/timeline/material-dark.css +99 -39
  172. package/styles/timeline/material.css +99 -39
  173. package/styles/timeline/material3-dark.css +100 -40
  174. package/styles/timeline/material3.css +100 -40
  175. package/styles/timeline/tailwind-dark.css +99 -39
  176. package/styles/timeline/tailwind.css +99 -39
  177. package/CHANGELOG.md +0 -601
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-layouts.es2015.js","sources":["../src/es6/splitter/splitter.js","../src/es6/splitter/index.js","../src/es6/dashboard-layout/dashboard-layout.js","../src/es6/dashboard-layout/index.js","../src/es6/timeline/timeline.js","../src/es6/timeline/index.js","../src/es6/index.js"],"sourcesContent":["var __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';\nconst ROOT = 'e-splitter';\nconst HORIZONTAL_PANE = 'e-splitter-horizontal';\nconst VERTICAL_PANE = 'e-splitter-vertical';\nconst PANE = 'e-pane';\nconst SPLIT_H_PANE = 'e-pane-horizontal';\nconst SPLIT_V_PANE = 'e-pane-vertical';\nconst SPLIT_BAR = 'e-split-bar';\nconst SPLIT_H_BAR = 'e-split-bar-horizontal';\nconst SPLIT_V_BAR = 'e-split-bar-vertical';\nconst STATIC_PANE = 'e-static-pane';\nconst SCROLL_PANE = 'e-scrollable';\nconst RESIZE_BAR = 'e-resize-handler';\nconst RESIZABLE_BAR = 'e-resizable-split-bar';\nconst SPLIT_BAR_HOVER = 'e-split-bar-hover';\nconst SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nconst HIDE_HANDLER = 'e-hide-handler';\nconst SPLIT_TOUCH = 'e-splitter-touch';\nconst DISABLED = 'e-disabled';\nconst RTL = 'e-rtl';\nconst E_ICONS = 'e-icons';\nconst COLLAPSIBLE = 'e-collapsible';\nconst NAVIGATE_ARROW = 'e-navigate-arrow';\nconst ARROW_RIGHT = 'e-arrow-right';\nconst ARROW_LEFT = 'e-arrow-left';\nconst ARROW_UP = 'e-arrow-up';\nconst ARROW_DOWN = 'e-arrow-down';\nconst HIDE_ICON = 'e-icon-hidden';\nconst EXPAND_PANE = 'e-expanded';\nconst COLLAPSE_PANE = 'e-collapsed';\nconst PANE_HIDDEN = 'e-pane-hidden';\nconst RESIZABLE_PANE = 'e-resizable';\nconst LAST_BAR = 'e-last-bar';\nconst BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nexport class PaneProperties extends ChildProperty {\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/**\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 */\nlet Splitter = class Splitter extends Component {\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 constructor(options, element) {\n super(options, element);\n this.needsID = true;\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 onPropertyChanged(newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (const prop of Object.keys(newProp)) {\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 const paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isPaneContentChanged = paneCounts.some((count) => !isNullOrUndefined(newProp.paneSettings[count].content));\n if (this.isReact && isPaneContentChanged) {\n let cPaneCount = 0;\n for (let k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n const hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (let i = 0; i < paneCounts.length; i++) {\n const index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n const changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (let j = 0; j < changedPropsCount; j++) {\n const property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n const 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 const newVal = Object(newProp.paneSettings[index])[`${property}`];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n const 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 updatePaneSize(newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n const flexPaneIndexes = [];\n let staticPaneWidth;\n let flexCount = 0;\n for (let 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 const flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n const avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (let j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n }\n initializeValues() {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n }\n preRender() {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n const orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n const name = Browser.info.name;\n const css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n }\n getPersistData() {\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 getModuleName() {\n return 'splitter';\n }\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n render() {\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 onDocumentClick(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 checkPaneSize(e) {\n const prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n const nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n const splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n const previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n const 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 onMove(event) {\n if (this.allPanes.length > 1) {\n const index = this.getSeparatorIndex(this.currentSeparator);\n const isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n const isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n const 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 getMinInPixel(minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n let paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n const 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 sanitizeHelper(value) {\n if (this.enableHtmlSanitizer) {\n const item = SanitizeHtmlHelper.beforeSanitize();\n const 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 checkDataAttributes() {\n let api;\n let value;\n // Element values\n for (let 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 (let paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (let 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 let 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 destroyPaneSettings() {\n [].slice.call(this.element.children).forEach((el) => {\n detach(el);\n });\n this.restoreElem();\n }\n setPaneSettings() {\n const childCount = this.allPanes.length;\n const paneCollection = [];\n const 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 (let 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 checkArrow(paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n }\n removeDataPrefix(attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n }\n setRTL(rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n setReversePane() {\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 setSplitterSize(element, size, property) {\n const style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n }\n getPanesDimensions() {\n for (let 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 setCssClass(element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n }\n hideResizer(target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n showResizer(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 resizableModel(index, newVal) {\n const paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n const 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 collapsibleModelUpdate(index) {\n const paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n const arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n const 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 collapseArrow(barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n }\n updateIsCollapsed(index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n let targetEle;\n const lastBarIndex = (index === this.allBars.length);\n const 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 isCollapsed(index) {\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 let targetEle;\n const lastBarIndex = (index === this.allBars.length);\n const 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 const event = { target: targetEle };\n const eventArgs = this.beforeAction(event);\n this.trigger('beforeCollapse', eventArgs, (beforeCollapseArgs) => {\n if (!beforeCollapseArgs.cancel) {\n let collapsedindex = [];\n collapsedindex[0] = index;\n let j = 1;\n for (let 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 (let i = 0; i < collapsedindex.length; i++) {\n if (!this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n this.updateIsCollapsed(collapsedindex[i], this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (let i = collapsedindex.length; i > 0; i--) {\n if (!this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n const targetArrow = this.targetArrows();\n this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n const collapseEventArgs = this.afterAction(event);\n this.trigger('collapsed', collapseEventArgs);\n this.collapseFlag = false;\n }\n });\n }\n else {\n for (let 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 (let 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 const collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n const targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n const targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n }\n targetArrows() {\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 collapsedOnchange(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 isEnabled(enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n }\n setSeparatorSize(size) {\n const sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n const separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (let index = 0; index < this.allBars.length; index++) {\n const splitBar = selectAll('.' + separator, this.element)[index];\n const 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 changeOrientation(orientation) {\n const 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 (let 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 (let index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n }\n checkSplitPane(currentBar, elementIndex) {\n const paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n }\n collectPanes(childNodes) {\n const elements = [];\n for (let 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 getPrevPane(order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n }\n getNextPane(order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n }\n getOrderPane(order) {\n let pane;\n for (let 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 getOrderIndex(order, type) {\n let index;\n let panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (let 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 updateSeparatorSize(resizeHanlder) {\n const 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 addResizeHandler(currentBar) {\n const resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n }\n getHeight(target) {\n let height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n }\n getWidth(target) {\n let width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n }\n setDimension(height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n }\n updateCollapseIcons(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 updateIconClass() {\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 createSeparator(i) {\n const separator = this.createElement('div');\n this.allBars.push(separator);\n const arrow1 = this.createElement('button');\n const 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 const size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n const proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', () => {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', () => {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n }\n updateResizablePanes(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 addSeparator(target) {\n const childCount = this.allPanes.length;\n const clonedEle = target.children;\n let separator;\n for (let i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n const 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 const allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (let i = 0; i < allBar.length; i++) {\n const 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 isResizable() {\n let 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 addMouseActions(separator) {\n let sTout;\n let hoverTimeOut;\n separator.addEventListener('mouseenter', () => {\n /* istanbul ignore next */\n sTout = setTimeout(() => {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, this.iconsDelay);\n });\n separator.addEventListener('mouseleave', () => {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', () => {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', () => {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(() => {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n });\n }\n getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n }\n updateCurrentSeparator(target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n }\n isSeparator(target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n }\n isMouseEvent(e) {\n let 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 updateCursorPosition(e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n const eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n }\n changeCoordinates(coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n }\n reportWindowSize() {\n const paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (let 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 const staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(() => {\n this.updateSplitterSize(true);\n }, 200);\n }\n }\n updateSplitterSize(iswindowResize) {\n let totalWidth = 0;\n const flexPaneIndexes = [];\n let flexCount = 0;\n const children = this.element.children;\n for (let i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (let j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n const diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (let i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n const avgDiffWidth = diff / flexPaneIndexes.length;\n for (let j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n const paneCount = this.allPanes.length;\n let minValue;\n let paneMinRange;\n const paneIndex = 0;\n let updatePane;\n let flexPane;\n for (let i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n const sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n const isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n const updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n const flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n }\n wireResizeEvents() {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n const touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n const touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n }\n unwireResizeEvents() {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n const touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n const 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 wireClickEvents() {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n }\n clickHandler(e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n const hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n const icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n }\n expandAction(e) {\n const eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, (beforeExpandArgs) => {\n if (!beforeExpandArgs.cancel) {\n this.expandPane(e);\n }\n const expandEventArgs = this.afterAction(e);\n this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n }\n getIcon(e) {\n const targetClass = e.target.className.split(' ').filter((className) => className !== NAVIGATE_ARROW && className !== HIDE_ICON);\n return targetClass[0];\n }\n expandPane(e) {\n this.removeStaticPanes();\n const collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n const 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 const collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n const icon = this.getIcon(e);\n const isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n const collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n const expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n const expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n const cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (let i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n }\n updateFlexGrow() {\n let collapseCount = 0;\n for (let 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 const visiblePane = collapseCount === this.allPanes.length - 2;\n const panes = this.allPanes;\n for (let i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n }\n hideTargetBarIcon(targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n }\n showTargetBarIcon(targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n }\n updateIconsOnCollapse(e, targetIcon) {\n this.splitterProperty();\n const removeIcon = this.arrow;\n const otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n const otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n const otherPrevPaneIndex = otherBarIndex;\n const otherNextPaneIndex = otherBarIndex + 1;\n const collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n }\n collapseAction(e) {\n const eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, (beforeCollapseArgs) => {\n if (!beforeCollapseArgs.cancel) {\n this.collapsePane(e);\n const collapseEventArgs = this.afterAction(e);\n this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n }\n collapsePane(e) {\n this.removeStaticPanes();\n const collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n const 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 const collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n const icon = this.getIcon(e);\n const isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n const collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n const expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n const collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n const isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n let isFlexPaneHidden = true;\n for (let i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n }\n removeStaticPanes() {\n for (let 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 beforeAction(e) {\n const 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 updatePaneSettings(index, collapsed) {\n const paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n splitterProperty() {\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 showCurrentBarIcons() {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n }\n hideBarIcons(bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n }\n getCollapseCount(prevPaneIndex, nextPaneIndex) {\n let collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n }\n checkResizableProp(prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n }\n updateIconsOnExpand(e, targetIcon) {\n this.splitterProperty();\n const showIcon = this.arrow;\n const otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n const otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n const otherPrevPaneIndex = otherBarIndex;\n const otherNextPaneIndex = otherBarIndex + 1;\n const collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n }\n afterAction(e) {\n const 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 currentIndex(e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n }\n getSeparatorIndex(target) {\n let array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n }\n getPrevBar(currentBar) {\n const prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n }\n getNextBar(currentBar) {\n const prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n }\n updateBars(index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n }\n splitterDetails(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 triggerResizing(e) {\n const 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 onMouseDown(e) {\n e.preventDefault();\n const 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 const 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 (let i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, (resizeStartArgs) => {\n if (!resizeStartArgs.cancel) {\n this.wireResizeEvents();\n this.checkPaneSize(e);\n }\n });\n }\n updatePaneFlexBasis(pane) {\n let 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 const offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n }\n removePercentageUnit(value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n }\n convertPercentageToPixel(value, targetElement) {\n const percentage = value.toString();\n let convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n let offsetValue;\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 convertPixelToPercentage(value) {\n const offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n }\n convertPixelToNumber(value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n }\n calcDragPosition(rectValue, offsetValue) {\n const separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n let separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n }\n getSeparatorPosition(e) {\n this.updateCursorPosition(e, 'current');\n const rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n const offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n }\n getMinMax(paneIndex, target, selection) {\n const defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n let 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 getPreviousPaneIndex() {\n const 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 getNextPaneIndex() {\n const 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 getPaneDetails() {\n let prevPane = null;\n let 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 getPaneHeight(pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n }\n isValidSize(paneIndex) {\n let 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 getPaneDimensions() {\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 checkCoordinates(pageX, pageY) {\n let coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n }\n isCursorMoved(e) {\n let 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 getBorder() {\n this.border = 0;\n const 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 onMouseMove(e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n const left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n let separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n const difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n let flexPaneCount = 0;\n for (let i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n const allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n const middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n const isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n }\n // eslint-disable-next-line\n validateMinRange(paneIndex, paneCurrentWidth, pane) {\n let paneMinRange = null;\n let paneMinDimensions;\n let difference = 0;\n let 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 validateMaxRange(paneIndex, paneCurrentWidth, pane) {\n let paneMaxRange = null;\n let paneMaxDimensions;\n let 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 validateMinMaxValues() {\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 equatePaneWidths() {\n let 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 calculateCurrentDimensions() {\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 addStaticPaneClass() {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n }\n validateDraggedPosition(draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n const separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n const prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n const nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n const pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n const pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n const pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n const pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n let 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 onMouseUp(e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n const 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 (let 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 const 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 panesDimension(index, child) {\n const childCount = child.length;\n let 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 setTemplate(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 templateCompile(ele, cnt) {\n // eslint-disable-next-line\n const blazorContain = Object.keys(window);\n const tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach((childEle) => {\n ele.appendChild(childEle);\n });\n }\n }\n compileElement(ele, val, prop) {\n // eslint-disable-next-line\n const blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n const 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 let templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n let 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((el) => {\n ele.appendChild(el);\n });\n }\n }\n paneCollapsible(pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n }\n createSplitPane(target) {\n let childCount = target.children.length;\n for (let i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n const childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n const child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (let 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 expand(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 collapse(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 destroy() {\n if (!this.isDestroyed) {\n super.destroy();\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 (let i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.allBars = [];\n this.allPanes = [];\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n }\n }\n restoreElem() {\n if (this.templateElement.length > 0) {\n for (let 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 addPaneClass(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 removePaneOrders(paneClass) {\n const childNodes = this.element.childNodes;\n const panes = [];\n for (let i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (let i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n }\n setPaneOrder() {\n for (let i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n }\n removeSeparator() {\n for (let i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n }\n updatePanes() {\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 addPane(paneProperties, index) {\n let newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n const 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 removePane(index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n const 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};\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);\nSplitter = __decorate([\n NotifyPropertyChanges\n], Splitter);\nexport { Splitter };\n","/**\n * splitter modules\n */\nexport * from './splitter';\n","var __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\nconst preventSelect = 'e-prevent';\nconst dragging = 'e-dragging';\nconst dragRestrict = 'e-drag-restrict';\nconst drag = 'e-drag';\nconst resize = 'e-resize';\nconst resizeicon = 'e-dl-icon';\nconst responsive = 'e-responsive';\nconst east = 'e-east';\nconst west = 'e-west';\nconst north = 'e-north';\nconst south = 'e-south';\nconst single = 'e-single';\nconst double = 'e-double';\nconst northEast = 'e-north-east';\nconst southEast = 'e-south-east';\nconst northWest = 'e-north-west';\nconst southWest = 'e-south-west';\nconst panel = 'e-panel';\nconst panelContent = 'e-panel-content';\nconst panelContainer = 'e-panel-container';\nconst disable = 'e-disabled';\nconst header = 'e-panel-header';\nconst panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nexport class Panel extends ChildProperty {\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/**\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 */\nlet DashboardLayout = class DashboardLayout extends Component {\n constructor(options, element) {\n super(options, element);\n this.rows = 1;\n this.panelID = 0;\n this.movePanelCalled = false;\n this.resizeCalled = false;\n this.mOffX = 0;\n this.mOffY = 0;\n this.maxTop = 9999;\n this.maxRows = 100;\n this.mouseX = 0;\n this.mouseY = 0;\n this.minTop = 0;\n this.minLeft = 0;\n this.isInlineRendering = false;\n this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n this.panelsSizeY = 0;\n this.resizeHeight = false;\n this.eventVar = false;\n setValue('mergePersistData', this.mergePersistPanelData, this);\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n preRender() {\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 setOldRowCol() {\n for (let 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 createPanelElement(cssClass, idValue) {\n const 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 render() {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n }\n initGridLines() {\n this.table = document.createElement('table');\n const tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (let i = 0; i < this.maxRow(); i++) {\n const tr = document.createElement('tr');\n for (let j = 0; j < this.columns; j++) {\n const td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n }\n initialize() {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n const panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (let i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (let i = 0; i < panelElements.length; i++) {\n const 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 (let i = 0; i < this.panels.length; i++) {\n const panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n const 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 const panel = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel);\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 checkMediaQuery() {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n }\n calculateCellSize() {\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 maxRow(recheck) {\n let maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (let 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 maxCol() {\n let maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n }\n updateOldRowColumn() {\n for (let i = 0; i < this.panels.length; i++) {\n const id = this.panels[i].id;\n if (this.element.querySelector(\"[id='\" + id + \"']\")) {\n const row = parseInt(this.element.querySelector(\"[id='\" + id + \"']\").getAttribute('data-row'), 10);\n const col = parseInt(this.element.querySelector(\"[id='\" + id + \"']\").getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n }\n createSubElement(cssClass, idValue, className) {\n const 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 templateParser(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n const sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n }\n renderTemplate(content, appendElement, type, isStringTemplate, prop) {\n const templateFn = this.templateParser(content);\n const templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n const 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 const compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (const item of compilerFn) {\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n }\n renderPanels(cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n const 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 const 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 const 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 const cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass, cellElement.id + '_body', panelContent);\n const headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n const contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n const 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 disablePanel(panelElement) {\n addClass([panelElement], [disable]);\n }\n getInlinePanels(panelElement) {\n const 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 const panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n }\n resizeEvents() {\n if (this.allowResizing) {\n const panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (let i = 0; i < panelElements.length; i++) {\n const 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 bindEvents() {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n }\n downResizeHandler(e) {\n const el = closest((e.currentTarget), '.e-panel');\n for (let i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n const moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n const upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n }\n downHandler(e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n const el = closest((e.currentTarget), '.e-panel');\n const 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 touchDownResizeHandler(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 getCellSize() {\n return [this.cellSize[0], this.cellSize[1]];\n }\n updateMaxTopLeft(e) {\n this.moveTarget = this.downTarget;\n const el = closest((this.moveTarget), '.e-panel');\n const args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n }\n updateResizeElement(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 const handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (let 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 moveResizeHandler(e) {\n this.updateMaxTopLeft(e);\n const el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n const panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n const diffY = this.mouseY - this.lastMouseY + this.mOffY;\n const 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 touchMoveResizeHandler(e) {\n this.updateMaxTopLeft(e);\n const 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 const panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n const diffX = this.mouseX - this.lastMouseX + this.mOffX;\n const 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 resizingPanel(el, panelModel, currentX, currentY) {\n let oldSizeX = this.getCellInstance(el.id).sizeX;\n let oldSizeY = this.getCellInstance(el.id).sizeY;\n const dY = currentY;\n const 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 const initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n const newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n const item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n const model = this.getCellInstance(el.id);\n const value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n upResizeHandler(e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n const el = closest((this.upTarget), '.e-panel');\n const args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n const moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n const 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 const 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 getResizeRowColumn(item) {\n let isChanged = false;\n let col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n let 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 let 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 let sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n const 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 pixelsToColumns(pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n }\n pixelsToRows(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 getMinWidth(item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n }\n getMaxWidth(item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n }\n getMinHeight(item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n }\n getMaxHeight(item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n }\n sortedPanel() {\n this.sortedArray = [];\n for (let i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n }\n moveItemsUpwards() {\n if (this.allowFloating === false) {\n return;\n }\n for (let rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n const columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (let colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n const item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n }\n moveItemUpwards(item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n const colIndex = this.getCellInstance(item.id).col;\n const sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n const sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n let availableRow = null;\n let availableColumn = null;\n let rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n const 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 sortItem(item, rowValue, columnValue) {\n this.overlapElement = [];\n const column = parseInt(item.getAttribute('data-col'), 10);\n const 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 const 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 const 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 updateLayout(element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n }\n refresh() {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n // eslint-disable-next-line\n const internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (let i = 0; i < internalPanels.length; i++) {\n const ele = internalPanels[i];\n const cellInstance = this.getCellInstance(ele.id);\n const row = parseInt(ele.getAttribute('data-row'), 10);\n const col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n updateGridLines() {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n }\n checkDragging(dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (let i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (let i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n }\n sortPanels() {\n const model = [];\n for (let row = 0; row <= this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n this.panels.filter((panel) => {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n }\n }\n return model;\n }\n checkMediaQuerySizing() {\n addClass([this.element], [responsive]);\n let 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 (let i = 0; i < updatedPanel.length; i++) {\n const panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n let updatedHeight;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n }\n panelResponsiveUpdate() {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (let i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n const ele = this.element.querySelectorAll('.e-panel')[i];\n const panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (let 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 updateRowHeight() {\n this.getRowColumn();\n this.setHeightWidth();\n }\n setHeightWidth() {\n let heightValue;\n let widthValue;\n if (this.checkMediaQuery()) {\n let entirePanelsY = 0;\n for (let i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n }\n setHeightAndWidth(panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n }\n renderCell(panel, isStringTemplate, index) {\n let 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 const 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 setPanelPosition(cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n const heightValue = this.getCellSize()[1];\n const widthValue = this.getCellSize()[0];\n const left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n let 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 getRowColumn() {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n const panelElements = this.element.querySelectorAll('.e-panel');\n for (let i = 0; i < panelElements.length; i++) {\n const panelElement = panelElements[i];\n const rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n const 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 (let i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n }\n setMinMaxValues(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 checkMinMaxValues(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 panelPropertyChange(panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n }\n renderDashBoardCells(cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (let j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n const 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 collisions(row, col, sizeX, sizeY, ignore) {\n const items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n let item;\n for (let h = 0; h < sizeY; ++h) {\n for (let w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector(\"[id='\" + item.id + \"']\")) === -1) &&\n items.indexOf(this.element.querySelector(\"[id='\" + item.id + \"']\")) === -1) {\n items.push(this.element.querySelector(\"[id='\" + item.id + \"']\"));\n }\n }\n }\n return items;\n }\n rightWardsSpaceChecking(rowElements, col, ele) {\n const columns = [];\n let spacedColumns = [];\n rowElements.forEach((element) => {\n const columnValue = parseInt(element.getAttribute('data-col'), 10);\n const sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (let 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 (let 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 const occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach((colValue) => {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n const eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach((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((next, previous) => { return next - previous; });\n return spacedColumns;\n }\n getOccupiedColumns(element) {\n const occupiedItems = [];\n const sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n const col = parseInt(element.getAttribute('data-col'), 10);\n for (let i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n }\n leftWardsSpaceChecking(rowElements, col, ele) {\n let spacedColumns = [];\n const columns = [];\n rowElements.forEach((element) => {\n const colValue = parseInt(element.getAttribute('data-col'), 10);\n const xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= this.columns && colValue <= col) {\n if (xValue > 1) {\n for (let 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 (let 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 const occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach((colValue) => {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n const eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach((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((next, prev) => { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n }\n adjustmentAvailable(row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n let isAdjustable = false;\n let rightSpacing;\n let rowElement = [];\n this.topAdjustable = undefined;\n const eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n const 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 const 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 const endRow = this.getCellInstance(ele.id).row;\n let topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (let rowValue = row; rowValue >= 0; rowValue--) {\n const 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 isXSpacingAvailable(spacing, sizeX) {\n let isSpaceAvailable = false;\n let subSpacingColumns = [];\n for (let 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((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 getRowElements(base) {\n const rowElements = [];\n for (let i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n }\n isLeftAdjustable(spaces, ele, row, col, sizeX, sizeY) {\n let 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 let xAdjust;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (let i = 0; i < spaces.length; i++) {\n const 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 isRightAdjustable(spacing, ele, row, col, sizeX, sizeY) {\n let 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 let xAdjust;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (let i = 0; i < spacing.length; i++) {\n const collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (let 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 replacable(spacing, sizeX, row, sizeY, ele) {\n let isRightAdjudtable;\n const updatedCollision = [];\n for (let j = 0; j < spacing.length; j++) {\n const xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n const 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 sortCollisionItems(collisionItems) {\n const updatedCollision = [];\n let rowElements;\n for (let row = this.rows - 1; row >= 0; row--) {\n rowElements = [];\n collisionItems.forEach((element) => {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n for (let column = this.columns - 1; column >= 0; column--) {\n rowElements.forEach((item) => {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n }\n }\n return updatedCollision;\n }\n updatedModels(collisionItems, panelModel, ele) {\n const removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach((element) => {\n this.checkingElement = element;\n const model = this.getCellInstance(element.id);\n const adjust = !this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (let rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n const collisions = this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach((item) => {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach((item) => {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n }\n resetLayout(model) {\n let 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 (let i = 0; i < this.panels.length; i++) {\n const element = this.element.querySelector(\"[id='\" + this.panels[i].id + \"']\");\n if (element === this.mainElement) {\n continue;\n }\n const rowValue = this.cloneObject[element.id].row;\n const 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 swapAvailability(collisions, element) {\n let available = true;\n const eleModel = this.getCellInstance(element.id);\n for (let count = 0; count < collisions.length; count++) {\n const collideModel = this.getCellInstance(collisions[count].id);\n for (let i = 1; i < eleModel.sizeY; i++) {\n const excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n const 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 checkForSwapping(collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n let direction;\n const 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 let isSwappable = false;\n for (let count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n const updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (let count = 0; count < collisions.length; count++) {\n const collideInstance = this.getCellInstance(collisions[count].id);\n const elementinstance = this.getCellInstance(element.id);\n const 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 const 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 swapItems(collisions, element, panelModel) {\n let direction;\n const swappedElements = [];\n swappedElements.push(element);\n const 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 const collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n const collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (let 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 (let 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((item) => {\n this.cloneObject[item.id] = this.oldRowCol[item.id];\n const itemModel = this.getCellInstance(item.id);\n for (let i = 0; i < this.sortedArray.length; i++) {\n if (!this.sortedArray[i]) {\n continue;\n }\n for (let 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 updatePanelLayout(element, panelModel) {\n this.collisionChecker = {};\n let initialModel = [];\n let checkForAdjustment;\n const collisionModels = [];\n let 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 (let i = 0; i < initialModel.length; i++) {\n const 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 const 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 const proxy = this;\n collisionModels.forEach((item1) => {\n if (proxy.overlapElement.indexOf(item1) === -1) {\n proxy.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 checkForCompletePushing() {\n for (let 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 const key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[`${key}`].row, this.overlapElement, this.collisionChecker[`${key}`].srcEle);\n }\n }\n }\n updateCollisionChecked(item) {\n for (let count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n }\n updateRowColumn(row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n const eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n const eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (let i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (let i = 0; i < this.overlapElementClone.length; i++) {\n this.collisionChecker[this.overlapElementClone[i].id] = {\n ele: this.overlapElementClone[i],\n row: row,\n srcEle: srcEle\n };\n }\n const updatedRow = eleRow + eleSizeY;\n const collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n const collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n const collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n let colValue;\n let collisionModels;\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 const overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n const ele = document.getElementById(overlapElementModel.id);\n for (let k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele);\n this.oldRowCol[(ele.id)] = { row: overlapElementModel.row, col: colValue };\n const panelModel = this.getCellInstance(ele.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n const eleRow = parseInt(ele.getAttribute('data-row'), 10);\n const eleCol = parseInt(ele.getAttribute('data-col'), 10);\n const sizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n const sizeY = parseInt(ele.getAttribute('data-sizeY'), 10);\n const excludeElements = [];\n excludeElements.push(ele);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow, 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, ele);\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 const 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 const 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 collisionPanel(collisionModels, colValue, updatedRow, clone) {\n const panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n const proxy = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach((item1) => {\n proxy.overlapElement.push(item1);\n });\n const overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (let m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (let p = 0; p < this.overlapSubElementClone.length; p++) {\n const rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n const colValue = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n const sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n const sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n const collisionModels1 = this.collisions(rowVal, colValue, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n // eslint-disable-next-line\n const proxy = this;\n collisionModels1.forEach((item1) => {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n }\n removeResizeClasses(panelElements) {\n for (let i = 0; i < panelElements.length; i++) {\n const element = panelElements[i];\n const resizerElements = element.querySelectorAll('.e-resize');\n for (let i = 0; i < resizerElements.length; i++) {\n detach(resizerElements[i]);\n }\n }\n }\n ensureDrag() {\n this.checkDragging(this.dragCollection);\n const dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n }\n setClasses(panelCollection) {\n for (let i = 0; i < panelCollection.length; i++) {\n const element = panelCollection[i];\n const 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 setResizingClass(ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (let j = 0; j < this.availableClasses.length; j++) {\n const spanEle = this.createElement('span');\n let addClassValue;\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 setXYAttributes(element, panelModel) {\n const 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 setXYDimensions(panelModel) {\n const cellHeight = this.getCellSize()[1];\n const cellWidth = this.getCellSize()[0];\n let widthValue;\n let 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 getRowColumnDragValues(args) {\n let value = [];\n const elementTop = parseFloat(args.element.style.top);\n const elementLeft = parseFloat(args.element.style.left);\n const row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n const col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n }\n checkForChanges(isInteracted, added, removed) {\n let changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (let i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n const changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n }\n enableDraggingContent(collections) {\n for (let i = 0; i < collections.length; i++) {\n const abortArray = ['.e-resize', '.' + dragRestrict];\n const 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: (args) => {\n this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n const 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 const 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 const row = this.getRowColumnDragValues(args)[0];\n const col = this.getRowColumnDragValues(args)[1];\n const 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 const panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n this.dragStopEventArgs = { event: args.event, element: args.element };\n this.resizeEvents();\n this.rows = this.maxRow(true);\n this.setHeightWidth();\n this.updateDragArea();\n }\n else {\n const currentPanel = this.getCellInstance(this.mainElement.id);\n for (i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', this.panelsInitialModel[i].row.toString());\n currentPanel.col = this.panelsInitialModel[i].col;\n currentPanel.row = this.panelsInitialModel[i].row;\n this.setPanelPosition(this.mainElement, this.panelsInitialModel[i].row, this.panelsInitialModel[i].col);\n this.updatePanelLayout(this.mainElement, currentPanel);\n }\n }\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n }\n },\n drag: (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 updatePanels() {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n updateDragArea() {\n this.dragCollection.forEach((dragobj) => {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n }\n updateRowsHeight(row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n }\n onDraggingStart(args) {\n const dragArgs = args;\n // eslint-disable-next-line\n this.trigger('dragStart', dragArgs, (dragArgs) => {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n const eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n const 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 const panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n }\n // eslint-disable-next-line\n cloneModels(source, target) {\n if (target === undefined) {\n target = [];\n }\n for (let 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 (const k in source[i]) {\n target[i][`${k}`] = source[i][`${k}`];\n }\n }\n return target;\n }\n onDragStart(args) {\n let endCol;\n let endRow;\n let dragCol;\n if (!this.eventVar) {\n const col = dragCol = this.getRowColumnDragValues(args)[1];\n const 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 const 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 const model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n }\n getPanelBase(args) {\n let item;\n for (let 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 getPanel(row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n let sizeY = 1;\n while (row > -1) {\n let sizeX = 1;\n let col = column;\n while (col > -1) {\n const items = this.sortedArray[row];\n if (items) {\n const 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 setHolderPosition(args) {\n const sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n const col = parseInt(args.element.getAttribute('data-col'), 10);\n const row = parseInt(args.element.getAttribute('data-row'), 10);\n const sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n const widthValue = this.getCellSize()[0];\n const heightValue = this.getCellSize()[1];\n const top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n const left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n const cellSizeOne = this.getCellSize()[1];\n const 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 getCellInstance(idValue) {\n let currentCellInstance;\n for (let 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 addPanel(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 const 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 const 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 (let i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n const 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 updatePanel(panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n const 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 const cell = document.getElementById(panel.id);\n this.mainElement = cell;\n const 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 const 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 const 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 const cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n const headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n const contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n const 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 updateCloneArrayObject() {\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 serialize() {\n const cloneModel = this.cloneModels(this.panels);\n const customObject = [];\n for (let i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n }\n /**\n * Removes all the panels from the DashboardLayout.\n */\n removeAll() {\n this.removeAllCalled = true;\n for (let 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 const 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 removePanel(id) {\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n let removedPanel;\n for (let 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((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 movePanel(id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n const 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 const 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 setAttributes(value, ele) {\n for (let 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 resizePanel(id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n const panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n const ele = document.getElementById(id);\n const 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 destroy() {\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 (let i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n super.destroy();\n this.clearTemplate();\n this.renderReactTemplates();\n }\n removeAllPanel() {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n }\n setEnableRtl() {\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 updateCellSizeAndSpacing() {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (let i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n const ele = this.element.querySelectorAll('.e-panel')[i];\n const panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n }\n updatePanelsDynamically(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 checkForIDValues(panels) {\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach((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 onPropertyChanged(newProp, oldProp) {\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (const prop of Object.keys(newProp)) {\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 const panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (let i = 0; i < panelElements.length; i++) {\n const eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n const 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((panel) => {\n this.setMinMaxValues(panel);\n if (this.maxColumnValue < panel.col || this.maxColumnValue < (panel.col + panel.sizeX)) {\n const 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 getPersistData() {\n const keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n }\n /* istanbul ignore next */\n mergePersistPanelData(persistedData) {\n const data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n const dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n const keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (const key of keys) {\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n // eslint-disable-next-line\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n }\n /* istanbul ignore next */\n mergePanels(sortedPanels, panels) {\n const storedColumns = sortedPanels;\n for (let i = 0; i < storedColumns.length; i++) {\n this.checkForIDValues(panels);\n const localPanel = panels.filter((pan) => pan.id === storedColumns[i].id)[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n }\n }\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n getModuleName() {\n return 'DashboardLayout';\n }\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);\nDashboardLayout = __decorate([\n NotifyPropertyChanges\n], DashboardLayout);\nexport { DashboardLayout };\n","/**\n * dashboardlayout modules\n */\nexport * from './dashboard-layout';\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append } from '@syncfusion/ej2-base';\nconst ITEMLISTCONTAINER = 'e-timeline-items';\nconst ITEMCONTAINER = 'e-timeline-item';\nconst OPPOSITECONTENT = 'e-opposite-content';\nconst DOTCONTAINER = 'e-dot-item';\nconst DOTCONTENT = 'e-dot';\nconst CONTENT = 'e-content';\nconst ITEMCONNECTOR = 'e-connector';\nconst VERTICAL = 'e-vertical';\nconst HORIZONTAL = 'e-horizontal';\nconst TIMELINEREVERSE = 'e-timeline-reverse';\nconst RTL = 'e-rtl';\nconst DISABLED = 'e-item-disabled';\nconst TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nexport class TimelineItem extends ChildProperty {\n}\n__decorate([\n Property('')\n], TimelineItem.prototype, \"dotCss\", void 0);\n__decorate([\n Property('')\n], TimelineItem.prototype, \"content\", void 0);\n__decorate([\n Property('')\n], TimelineItem.prototype, \"oppositeContent\", void 0);\n__decorate([\n Property(false)\n], TimelineItem.prototype, \"disabled\", void 0);\n__decorate([\n Property('')\n], TimelineItem.prototype, \"cssClass\", void 0);\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nlet Timeline = class Timeline extends Component {\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n constructor(options, element) {\n super(options, element);\n }\n preRender() {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n }\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n getModuleName() {\n return 'timeline';\n }\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string}\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n render() {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n }\n updateOrientation() {\n const orientation = this.orientation.toLowerCase();\n if (orientation === 'horizontal' || orientation === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation);\n }\n }\n updateCssClass(addCss, removeCss = \"\") {\n let cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n this.element.classList.remove(...cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n this.element.classList.add(...cssClasses);\n }\n }\n updateRtl() {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n }\n updateAlign() {\n const align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n updateReverse() {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n }\n renderItems() {\n for (let index = 0; index < this.items.length; index++) {\n const item = this.items[parseInt(index.toString(), 10)];\n const timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n const oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n const oppositeCtn = this.getTemplateFunction(item.oppositeContent);\n if (typeof oppositeCtn === 'string') {\n oppositeTextEle.innerText = oppositeCtn;\n }\n else {\n append(oppositeCtn({ item: item, itemIndex: index }), oppositeTextEle);\n }\n }\n timelineItem.appendChild(oppositeTextEle);\n const dotContainer = this.createElement('div', { className: DOTCONTAINER });\n const dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n const dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n const contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n const ctn = this.getTemplateFunction(item.content);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }), contentEle);\n }\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n timelineItem.classList.add(...item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n const eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, (args) => { this.timelineListEle.appendChild(args.element); });\n }\n }\n updateTemplateFunction() {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n }\n renderItemContent(index, isrerender, timelineItem) {\n const listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n isrerender ? listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE) :\n timelineItem.classList.add(TEMPLATE);\n const item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n }\n removeItemContent(ele) {\n ele.classList.remove(TEMPLATE);\n const firstChild = ele.firstElementChild;\n for (let i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n }\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n getTemplateFunction(template, notCompile = true) {\n if (typeof template === 'string') {\n let content = '';\n try {\n const tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n }\n removeItemElements() {\n const listItems = this.timelineListEle.querySelectorAll('li');\n for (let i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n }\n updateElementClassArray() {\n const classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n }\n updateContent() {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (let i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n }\n destroy() {\n super.destroy();\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute(\"role\");\n this.element.removeAttribute(\"aria-label\");\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'items': {\n this.removeItemElements();\n this.renderItems();\n break;\n }\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n }\n};\n__decorate([\n Property(TimelineOrientation.Vertical)\n], Timeline.prototype, \"orientation\", void 0);\n__decorate([\n Property(TimelineAlign.After)\n], Timeline.prototype, \"align\", void 0);\n__decorate([\n Collection([], TimelineItem)\n], Timeline.prototype, \"items\", void 0);\n__decorate([\n Property('')\n], Timeline.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], Timeline.prototype, \"reverse\", void 0);\n__decorate([\n Property('')\n], Timeline.prototype, \"template\", void 0);\n__decorate([\n Event()\n], Timeline.prototype, \"created\", void 0);\n__decorate([\n Event()\n], Timeline.prototype, \"beforeItemRender\", void 0);\nTimeline = __decorate([\n NotifyPropertyChanges\n], Timeline);\nexport { Timeline };\n","/** Timeline export modules */\nexport * from './timeline';\n","/**\n * Layout all modules\n */\nexport * from './splitter/index';\nexport * from './dashboard-layout/index';\nexport * from './timeline/index';\n"],"names":["this","__decorate","setStyle","RTL","DISABLED"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-layouts.es2015.js","sources":["../src/es6/splitter/splitter.js","../src/es6/dashboard-layout/dashboard-layout.js","../src/es6/timeline/timeline.js"],"sourcesContent":["var __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';\nconst ROOT = 'e-splitter';\nconst HORIZONTAL_PANE = 'e-splitter-horizontal';\nconst VERTICAL_PANE = 'e-splitter-vertical';\nconst PANE = 'e-pane';\nconst SPLIT_H_PANE = 'e-pane-horizontal';\nconst SPLIT_V_PANE = 'e-pane-vertical';\nconst SPLIT_BAR = 'e-split-bar';\nconst SPLIT_H_BAR = 'e-split-bar-horizontal';\nconst SPLIT_V_BAR = 'e-split-bar-vertical';\nconst STATIC_PANE = 'e-static-pane';\nconst SCROLL_PANE = 'e-scrollable';\nconst RESIZE_BAR = 'e-resize-handler';\nconst RESIZABLE_BAR = 'e-resizable-split-bar';\nconst SPLIT_BAR_HOVER = 'e-split-bar-hover';\nconst SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nconst HIDE_HANDLER = 'e-hide-handler';\nconst SPLIT_TOUCH = 'e-splitter-touch';\nconst DISABLED = 'e-disabled';\nconst RTL = 'e-rtl';\nconst E_ICONS = 'e-icons';\nconst COLLAPSIBLE = 'e-collapsible';\nconst NAVIGATE_ARROW = 'e-navigate-arrow';\nconst ARROW_RIGHT = 'e-arrow-right';\nconst ARROW_LEFT = 'e-arrow-left';\nconst ARROW_UP = 'e-arrow-up';\nconst ARROW_DOWN = 'e-arrow-down';\nconst HIDE_ICON = 'e-icon-hidden';\nconst EXPAND_PANE = 'e-expanded';\nconst COLLAPSE_PANE = 'e-collapsed';\nconst PANE_HIDDEN = 'e-pane-hidden';\nconst RESIZABLE_PANE = 'e-resizable';\nconst LAST_BAR = 'e-last-bar';\nconst BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nexport class PaneProperties extends ChildProperty {\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/**\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 */\nlet Splitter = class Splitter extends Component {\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 constructor(options, element) {\n super(options, element);\n this.needsID = true;\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 onPropertyChanged(newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (const prop of Object.keys(newProp)) {\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 const paneCounts = Object.keys(newProp.paneSettings);\n const isPaneContentChanged = paneCounts.some((count) => !isNullOrUndefined(newProp.paneSettings[count].content));\n if (this.isReact && isPaneContentChanged) {\n let cPaneCount = 0;\n for (let k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n const hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (let i = 0; i < paneCounts.length; i++) {\n const index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n const changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (let j = 0; j < changedPropsCount; j++) {\n const property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n const 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 const newVal = Object(newProp.paneSettings[index])[`${property}`];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n const 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 updatePaneSize(newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n const flexPaneIndexes = [];\n let staticPaneWidth;\n let flexCount = 0;\n for (let 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 const flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n const avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (let j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n }\n initializeValues() {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n }\n preRender() {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n const orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n const name = Browser.info.name;\n const css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n }\n getPersistData() {\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 getModuleName() {\n return 'splitter';\n }\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n render() {\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 onDocumentClick(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 checkPaneSize(e) {\n const prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n const nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n const splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n const previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n const 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 onMove(event) {\n if (this.allPanes.length > 1) {\n const index = this.getSeparatorIndex(this.currentSeparator);\n const isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n const isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n const 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 getMinInPixel(minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n let paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n const 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 sanitizeHelper(value) {\n if (this.enableHtmlSanitizer) {\n const item = SanitizeHtmlHelper.beforeSanitize();\n const 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 checkDataAttributes() {\n let api;\n let value;\n // Element values\n for (let 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 (let paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (let 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 let 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 destroyPaneSettings() {\n [].slice.call(this.element.children).forEach((el) => {\n detach(el);\n });\n this.restoreElem();\n }\n setPaneSettings() {\n const childCount = this.allPanes.length;\n const paneCollection = [];\n const 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 (let 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 checkArrow(paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n }\n removeDataPrefix(attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n }\n setRTL(rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n }\n setReversePane() {\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 setSplitterSize(element, size, property) {\n const style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n }\n getPanesDimensions() {\n for (let index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n }\n setCssClass(element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n }\n hideResizer(target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n showResizer(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 resizableModel(index, newVal) {\n const paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n const i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n }\n collapsibleModelUpdate(index) {\n const paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n const arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n const 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 collapseArrow(barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n }\n updateIsCollapsed(index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n let targetEle;\n const lastBarIndex = (index === this.allBars.length);\n const 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 isCollapsed(index) {\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 let targetEle;\n const lastBarIndex = (index === this.allBars.length);\n const 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 const event = { target: targetEle };\n const eventArgs = this.beforeAction(event);\n this.trigger('beforeCollapse', eventArgs, (beforeCollapseArgs) => {\n if (!beforeCollapseArgs.cancel) {\n let collapsedindex = [];\n collapsedindex[0] = index;\n let j = 1;\n for (let 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 (let 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 (let i = collapsedindex.length; i > 0; i--) {\n if (!this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n const targetArrow = this.targetArrows();\n this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n const collapseEventArgs = this.afterAction(event);\n this.trigger('collapsed', collapseEventArgs);\n this.collapseFlag = false;\n }\n });\n }\n else {\n for (let 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 (let 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 const collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n const targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n const targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n }\n targetArrows() {\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 collapsedOnchange(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 isEnabled(enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n }\n setSeparatorSize(size) {\n const sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n const separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (let index = 0; index < this.allBars.length; index++) {\n const splitBar = selectAll('.' + separator, this.element)[index];\n const 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 changeOrientation(orientation) {\n const 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 (let 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 (let index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n }\n checkSplitPane(currentBar, elementIndex) {\n const paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n }\n collectPanes(childNodes) {\n const elements = [];\n for (let 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 getPrevPane(order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n }\n getNextPane(order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n }\n getOrderPane(order) {\n let pane;\n for (let 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 getOrderIndex(order, type) {\n let index;\n let panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (let 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 updateSeparatorSize(resizeHanlder) {\n const sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n }\n addResizeHandler(currentBar) {\n const resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n }\n getHeight(target) {\n let height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n }\n getWidth(target) {\n let width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n }\n setDimension(height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n }\n updateCollapseIcons(index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n }\n updateIconClass() {\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 createSeparator(i) {\n const separator = this.createElement('div');\n this.allBars.push(separator);\n const arrow1 = this.createElement('button');\n const 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 const size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n const proxy = null || this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', () => {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', () => {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n }\n updateResizablePanes(index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n }\n addSeparator(target) {\n const childCount = this.allPanes.length;\n const clonedEle = target.children;\n let separator;\n for (let i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n const 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 const allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (let i = 0; i < allBar.length; i++) {\n const 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 isResizable() {\n let 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 addMouseActions(separator) {\n let sTout;\n let hoverTimeOut;\n separator.addEventListener('mouseenter', () => {\n /* istanbul ignore next */\n sTout = setTimeout(() => {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, this.iconsDelay);\n });\n separator.addEventListener('mouseleave', () => {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', () => {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', () => {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(() => {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n });\n }\n getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n }\n updateCurrentSeparator(target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n }\n isSeparator(target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n }\n isMouseEvent(e) {\n let 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 updateCursorPosition(e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n const eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n }\n changeCoordinates(coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n }\n reportWindowSize() {\n const paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (let 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 const staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(() => {\n this.updateSplitterSize(true);\n }, 200);\n }\n }\n updateSplitterSize(iswindowResize) {\n let totalWidth = 0;\n const flexPaneIndexes = [];\n let flexCount = 0;\n const children = this.element.children;\n for (let i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (let j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n const diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (let i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n const avgDiffWidth = diff / flexPaneIndexes.length;\n for (let j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n const paneCount = this.allPanes.length;\n let minValue;\n let paneMinRange;\n const paneIndex = 0;\n let updatePane;\n let flexPane;\n for (let i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n const sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n const isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n const updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n const flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n }\n wireResizeEvents() {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n const touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n const touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n }\n unwireResizeEvents() {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n const touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n const 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 wireClickEvents() {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n }\n clickHandler(e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n const hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n const icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n }\n expandAction(e) {\n const eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, (beforeExpandArgs) => {\n if (!beforeExpandArgs.cancel) {\n this.expandPane(e);\n }\n const expandEventArgs = this.afterAction(e);\n this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n }\n getIcon(e) {\n const targetClass = e.target.className.split(' ').filter((className) => className !== NAVIGATE_ARROW && className !== HIDE_ICON);\n return targetClass[0];\n }\n expandPane(e) {\n this.removeStaticPanes();\n const collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n const 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 const collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n const icon = this.getIcon(e);\n const isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n const collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n const expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n const expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n const cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (let i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n }\n updateFlexGrow() {\n let collapseCount = 0;\n for (let 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 const visiblePane = collapseCount === this.allPanes.length - 2;\n const panes = this.allPanes;\n for (let i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n }\n hideTargetBarIcon(targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n }\n showTargetBarIcon(targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n }\n updateIconsOnCollapse(e, targetIcon) {\n this.splitterProperty();\n const removeIcon = this.arrow;\n const otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n const otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n const otherPrevPaneIndex = otherBarIndex;\n const otherNextPaneIndex = otherBarIndex + 1;\n const collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n }\n collapseAction(e) {\n const eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, (beforeCollapseArgs) => {\n if (!beforeCollapseArgs.cancel) {\n this.collapsePane(e);\n const collapseEventArgs = this.afterAction(e);\n this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n }\n collapsePane(e) {\n this.removeStaticPanes();\n const collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n const 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 const collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n const icon = this.getIcon(e);\n const isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n const collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n const expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n const collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n const isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n let isFlexPaneHidden = true;\n for (let i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n }\n removeStaticPanes() {\n for (let 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 beforeAction(e) {\n const 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 updatePaneSettings(index, collapsed) {\n const paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n splitterProperty() {\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 showCurrentBarIcons() {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n }\n hideBarIcons(bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n }\n getCollapseCount(prevPaneIndex, nextPaneIndex) {\n let collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n }\n checkResizableProp(prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n }\n updateIconsOnExpand(e, targetIcon) {\n this.splitterProperty();\n const showIcon = this.arrow;\n const otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n const otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n const otherPrevPaneIndex = otherBarIndex;\n const otherNextPaneIndex = otherBarIndex + 1;\n const collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n }\n afterAction(e) {\n const 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 currentIndex(e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n }\n getSeparatorIndex(target) {\n let array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n }\n getPrevBar(currentBar) {\n const prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n }\n getNextBar(currentBar) {\n const prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n }\n updateBars(index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n }\n splitterDetails(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 triggerResizing(e) {\n const 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 onMouseDown(e) {\n e.preventDefault();\n const 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 const 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 (let i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, (resizeStartArgs) => {\n if (!resizeStartArgs.cancel) {\n this.wireResizeEvents();\n this.checkPaneSize(e);\n }\n });\n }\n updatePaneFlexBasis(pane) {\n let 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 const offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n }\n removePercentageUnit(value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n }\n convertPercentageToPixel(value, targetElement) {\n const percentage = value.toString();\n let convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n let offsetValue;\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 convertPixelToPercentage(value) {\n const offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n }\n convertPixelToNumber(value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n }\n calcDragPosition(rectValue, offsetValue) {\n const separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n let separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n }\n getSeparatorPosition(e) {\n this.updateCursorPosition(e, 'current');\n const rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n const offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n }\n getMinMax(paneIndex, target, selection) {\n const defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n let 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 getPreviousPaneIndex() {\n const 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 getNextPaneIndex() {\n const 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 getPaneDetails() {\n let prevPane = null;\n let 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 getPaneHeight(pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n }\n isValidSize(paneIndex) {\n let 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 getPaneDimensions() {\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 checkCoordinates(pageX, pageY) {\n let coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n }\n isCursorMoved(e) {\n let 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 getBorder() {\n this.border = 0;\n const 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 onMouseMove(e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n const left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n let separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n const difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n let flexPaneCount = 0;\n for (let i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n const allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n const middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n const isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n }\n validateMinRange(paneIndex, paneCurrentWidth) {\n let paneMinRange = null;\n let paneMinDimensions;\n let difference = 0;\n let 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 validateMaxRange(paneIndex, paneCurrentWidth) {\n let paneMaxRange = null;\n let paneMaxDimensions;\n let 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 validateMinMaxValues() {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n }\n equatePaneWidths() {\n let 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 calculateCurrentDimensions() {\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 addStaticPaneClass() {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n }\n validateDraggedPosition(draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n const separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n const prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n const nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n const pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n const pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n const pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n const pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n let 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 onMouseUp(e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n const 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 (let 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 const 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 panesDimension(index, child) {\n const childCount = child.length;\n let 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 setTemplate(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 templateCompile(ele, cnt) {\n // eslint-disable-next-line\n const blazorContain = Object.keys(window);\n const tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach((childEle) => {\n ele.appendChild(childEle);\n });\n }\n }\n compileElement(ele, val, prop) {\n // eslint-disable-next-line\n const blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n const 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 let templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n let 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((el) => {\n ele.appendChild(el);\n });\n }\n }\n paneCollapsible(pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n }\n createSplitPane(target) {\n let childCount = target.children.length;\n for (let i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n const childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n const child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (let 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 expand(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 collapse(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 destroy() {\n if (!this.isDestroyed) {\n super.destroy();\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 (let i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.allBars = [];\n this.allPanes = [];\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n }\n }\n restoreElem() {\n if (this.templateElement.length > 0) {\n for (let 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 addPaneClass(pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n }\n removePaneOrders(paneClass) {\n const childNodes = this.element.childNodes;\n const panes = [];\n for (let i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (let i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n }\n setPaneOrder() {\n for (let i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n }\n removeSeparator() {\n for (let i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n }\n updatePanes() {\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 addPane(paneProperties, index) {\n let newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n const 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 removePane(index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n const 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};\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);\nSplitter = __decorate([\n NotifyPropertyChanges\n], Splitter);\nexport { Splitter };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nconst preventSelect = 'e-prevent';\nconst dragging = 'e-dragging';\nconst dragRestrict = 'e-drag-restrict';\nconst drag = 'e-drag';\nconst resize = 'e-resize';\nconst resizeicon = 'e-dl-icon';\nconst responsive = 'e-responsive';\nconst east = 'e-east';\nconst west = 'e-west';\nconst north = 'e-north';\nconst south = 'e-south';\nconst single = 'e-single';\nconst double = 'e-double';\nconst northEast = 'e-north-east';\nconst southEast = 'e-south-east';\nconst northWest = 'e-north-west';\nconst southWest = 'e-south-west';\nconst panel = 'e-panel';\nconst panelContent = 'e-panel-content';\nconst panelContainer = 'e-panel-container';\nconst disable = 'e-disabled';\nconst header = 'e-panel-header';\nconst panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nexport class Panel extends ChildProperty {\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/**\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 */\nlet DashboardLayout = class DashboardLayout extends Component {\n constructor(options, element) {\n super(options, element);\n this.rows = 1;\n this.panelID = 0;\n this.movePanelCalled = false;\n this.resizeCalled = false;\n this.mOffX = 0;\n this.mOffY = 0;\n this.maxTop = 9999;\n this.maxRows = 100;\n this.mouseX = 0;\n this.mouseY = 0;\n this.minTop = 0;\n this.minLeft = 0;\n this.isInlineRendering = false;\n this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n this.panelsSizeY = 0;\n this.resizeHeight = false;\n this.eventVar = false;\n setValue('mergePersistData', this.mergePersistPanelData, this);\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n preRender() {\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 setOldRowCol() {\n for (let 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 createPanelElement(cssClass, idValue) {\n const 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 render() {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n }\n initGridLines() {\n this.table = document.createElement('table');\n const tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (let i = 0; i < this.maxRow(); i++) {\n const tr = document.createElement('tr');\n for (let j = 0; j < this.columns; j++) {\n const td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n }\n initialize() {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n const panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (let i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (let i = 0; i < panelElements.length; i++) {\n const 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 (let i = 0; i < this.panels.length; i++) {\n const panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n const 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 const panel = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel);\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 checkMediaQuery() {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n }\n calculateCellSize() {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n }\n maxRow(recheck) {\n let maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (let 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 maxCol() {\n let maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n }\n updateOldRowColumn() {\n for (let i = 0; i < this.panels.length; i++) {\n const id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n const row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n const col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n }\n createSubElement(cssClass, idValue, className) {\n const 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 templateParser(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n const sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n }\n renderTemplate(content, appendElement, type, isStringTemplate, prop) {\n const templateFn = this.templateParser(content);\n const templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n const 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 const compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (const item of compilerFn) {\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n }\n renderPanels(cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n const 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 const 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 const 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 const cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass, cellElement.id + '_body', panelContent);\n const headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n const contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n const 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 disablePanel(panelElement) {\n addClass([panelElement], [disable]);\n }\n getInlinePanels(panelElement) {\n const 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 const panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n }\n resizeEvents() {\n if (this.allowResizing) {\n const panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (let i = 0; i < panelElements.length; i++) {\n const 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 bindEvents() {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n }\n downResizeHandler(e) {\n const el = closest((e.currentTarget), '.e-panel');\n for (let i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n const moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n const upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n }\n downHandler(e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n const el = closest((e.currentTarget), '.e-panel');\n const 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 touchDownResizeHandler(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 getCellSize() {\n return [this.cellSize[0], this.cellSize[1]];\n }\n updateMaxTopLeft(e) {\n this.moveTarget = this.downTarget;\n const el = closest((this.moveTarget), '.e-panel');\n const args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n }\n updateResizeElement(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 const handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (let 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 moveResizeHandler(e) {\n this.updateMaxTopLeft(e);\n const el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n const panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n const diffY = this.mouseY - this.lastMouseY + this.mOffY;\n const 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 touchMoveResizeHandler(e) {\n this.updateMaxTopLeft(e);\n const 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 const panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n const diffX = this.mouseX - this.lastMouseX + this.mOffX;\n const 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 resizingPanel(el, panelModel, currentX, currentY) {\n let oldSizeX = this.getCellInstance(el.id).sizeX;\n let oldSizeY = this.getCellInstance(el.id).sizeY;\n const dY = currentY;\n const 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 const initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n const newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n const item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n const model = this.getCellInstance(el.id);\n const value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n upResizeHandler(e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n const el = closest((this.upTarget), '.e-panel');\n const args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n const moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n const 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 const 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 getResizeRowColumn(item) {\n let isChanged = false;\n let col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n let 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 let 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 let sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n const 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 pixelsToColumns(pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n }\n pixelsToRows(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 getMinWidth(item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n }\n getMaxWidth(item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n }\n getMinHeight(item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n }\n getMaxHeight(item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n }\n sortedPanel() {\n this.sortedArray = [];\n for (let i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n }\n moveItemsUpwards() {\n if (this.allowFloating === false) {\n return;\n }\n for (let rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n const columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (let colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n const item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n }\n moveItemUpwards(item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n const colIndex = this.getCellInstance(item.id).col;\n const sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n const sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n let availableRow = null;\n let availableColumn = null;\n let rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n const 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 sortItem(item, rowValue, columnValue) {\n this.overlapElement = [];\n const column = parseInt(item.getAttribute('data-col'), 10);\n const 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 const 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 const 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 updateLayout(element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n }\n refresh() {\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 const internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (let i = 0; i < internalPanels.length; i++) {\n const ele = internalPanels[i];\n const cellInstance = this.getCellInstance(ele.id);\n const row = parseInt(ele.getAttribute('data-row'), 10);\n const col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n updateGridLines() {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n }\n checkDragging(dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (let i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (let i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n }\n sortPanels() {\n const model = [];\n for (let row = 0; row <= this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n this.panels.filter((panel) => {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n }\n }\n return model;\n }\n checkMediaQuerySizing() {\n addClass([this.element], [responsive]);\n let 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 (let i = 0; i < updatedPanel.length; i++) {\n const panelElement = document.getElementById(updatedPanel[i].id);\n let updatedHeight;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n }\n panelResponsiveUpdate() {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (let i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n const ele = this.element.querySelectorAll('.e-panel')[i];\n const panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (let 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 updateRowHeight() {\n this.getRowColumn();\n this.setHeightWidth();\n }\n setHeightWidth() {\n let heightValue;\n if (isNullOrUndefined(this.cellSpacing)) {\n return;\n }\n if (this.checkMediaQuery()) {\n let entirePanelsY = 0;\n for (let i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n const widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n }\n setHeightAndWidth(panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n }\n renderCell(panel, isStringTemplate, index) {\n let 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 const 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 setPanelPosition(cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n const heightValue = this.getCellSize()[1];\n const widthValue = this.getCellSize()[0];\n const left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n let 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 getRowColumn() {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n const panelElements = this.element.querySelectorAll('.e-panel');\n for (let i = 0; i < panelElements.length; i++) {\n const panelElement = panelElements[i];\n const rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n const 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 (let i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n }\n setMinMaxValues(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 checkMinMaxValues(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 panelPropertyChange(panel, value) {\n panel.setProperties(value, true);\n }\n renderDashBoardCells(cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (let j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n const 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 collisions(row, col, sizeX, sizeY, ignore) {\n const items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n let item;\n for (let h = 0; h < sizeY; ++h) {\n for (let w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n }\n rightWardsSpaceChecking(rowElements, col, ele) {\n const columns = [];\n let spacedColumns = [];\n rowElements.forEach((element) => {\n const columnValue = parseInt(element.getAttribute('data-col'), 10);\n const sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (let 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 (let 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 const occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach((colValue) => {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n const eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach((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((next, previous) => { return next - previous; });\n return spacedColumns;\n }\n getOccupiedColumns(element) {\n const occupiedItems = [];\n const sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n const col = parseInt(element.getAttribute('data-col'), 10);\n for (let i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n }\n leftWardsSpaceChecking(rowElements, col, ele) {\n let spacedColumns = [];\n const columns = [];\n rowElements.forEach((element) => {\n const colValue = parseInt(element.getAttribute('data-col'), 10);\n const xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= this.columns && colValue <= col) {\n if (xValue > 1) {\n for (let 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 (let 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 const occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach((colValue) => {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n const eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach((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((next, prev) => { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n }\n adjustmentAvailable(row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n let isAdjustable = false;\n let rightSpacing;\n let rowElement = [];\n this.topAdjustable = undefined;\n const eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n const 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 const 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 const endRow = this.getCellInstance(ele.id).row;\n let topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (let rowValue = row; rowValue >= 0; rowValue--) {\n const 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 isXSpacingAvailable(spacing, sizeX) {\n let isSpaceAvailable = false;\n let subSpacingColumns = [];\n for (let 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((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 getRowElements(base) {\n const rowElements = [];\n for (let i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n }\n isLeftAdjustable(spaces, ele, row, col, sizeX, sizeY) {\n let 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 let xAdjust;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (let i = 0; i < spaces.length; i++) {\n const 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 isRightAdjustable(spacing, ele, row, col, sizeX, sizeY) {\n let 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 let xAdjust;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (let i = 0; i < spacing.length; i++) {\n const collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (let 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 replacable(spacing, sizeX, row, sizeY, ele) {\n let isRightAdjudtable;\n const updatedCollision = [];\n for (let j = 0; j < spacing.length; j++) {\n const xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n const exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n }\n sortCollisionItems(collisionItems) {\n const updatedCollision = [];\n let rowElements;\n for (let row = this.rows - 1; row >= 0; row--) {\n rowElements = [];\n collisionItems.forEach((element) => {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n for (let column = this.columns - 1; column >= 0; column--) {\n rowElements.forEach((item) => {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n }\n }\n return updatedCollision;\n }\n updatedModels(collisionItems, panelModel, ele) {\n const removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach((element) => {\n this.checkingElement = element;\n const model = this.getCellInstance(element.id);\n const adjust = !this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (let rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n const collisions = this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach((item) => {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach((item) => {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n }\n resetLayout(model) {\n let 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 (let i = 0; i < this.panels.length; i++) {\n const element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n const rowValue = this.cloneObject[element.id].row;\n const 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 swapAvailability(collisions, element) {\n let available = true;\n const eleModel = this.getCellInstance(element.id);\n for (let count = 0; count < collisions.length; count++) {\n const collideModel = this.getCellInstance(collisions[count].id);\n for (let i = 1; i < eleModel.sizeY; i++) {\n const excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n const 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 checkForSwapping(collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n let direction;\n const 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 let isSwappable = false;\n for (let count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n const updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (let count = 0; count < collisions.length; count++) {\n const collideInstance = this.getCellInstance(collisions[count].id);\n const elementinstance = this.getCellInstance(element.id);\n const 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 const 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 swapItems(collisions, element, panelModel) {\n let direction;\n const swappedElements = [];\n swappedElements.push(element);\n const 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 const collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n const collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (let 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 (let 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((item) => {\n this.cloneObject[item.id] = this.oldRowCol[item.id];\n const itemModel = this.getCellInstance(item.id);\n for (let i = 0; i < this.sortedArray.length; i++) {\n if (!this.sortedArray[i]) {\n continue;\n }\n for (let 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 updatePanelLayout(element, panelModel) {\n this.collisionChecker = {};\n let initialModel = [];\n let checkForAdjustment;\n const collisionModels = [];\n let 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 (let i = 0; i < initialModel.length; i++) {\n const 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 const value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach((item1) => {\n if (this.overlapElement.indexOf(item1) === -1) {\n this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n }\n checkForCompletePushing() {\n for (let 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 const key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[`${key}`].row, this.overlapElement, this.collisionChecker[`${key}`].srcEle);\n }\n }\n }\n updateCollisionChecked(item) {\n for (let count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n }\n updateRowColumn(row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n const eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n const eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (let i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (let i = 0; i < this.overlapElementClone.length; i++) {\n this.collisionChecker[this.overlapElementClone[i].id] = {\n ele: this.overlapElementClone[i],\n row: row,\n srcEle: srcEle\n };\n }\n const updatedRow = eleRow + eleSizeY;\n const collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n const collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n const collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n let colValue;\n let collisionModels;\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 const overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n const ele = document.getElementById(overlapElementModel.id);\n for (let k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele);\n this.oldRowCol[(ele.id)] = { row: overlapElementModel.row, col: colValue };\n const panelModel = this.getCellInstance(ele.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n const eleRow = parseInt(ele.getAttribute('data-row'), 10);\n const eleCol = parseInt(ele.getAttribute('data-col'), 10);\n const sizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n const sizeY = parseInt(ele.getAttribute('data-sizeY'), 10);\n const excludeElements = [];\n excludeElements.push(ele);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow, 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, ele);\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 const 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 const 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 collisionPanel(collisionModels, colValue, updatedRow, clone) {\n const panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach((item1) => {\n this.overlapElement.push(item1);\n });\n const overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (let m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (let p = 0; p < this.overlapSubElementClone.length; p++) {\n const rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n const colValue = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n const sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n const sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n const collisionModels1 = this.collisions(rowVal, colValue, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach((item1) => {\n this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n }\n removeResizeClasses(panelElements) {\n for (let i = 0; i < panelElements.length; i++) {\n const element = panelElements[i];\n const resizerElements = element.querySelectorAll('.e-resize');\n for (let i = 0; i < resizerElements.length; i++) {\n detach(resizerElements[i]);\n }\n }\n }\n ensureDrag() {\n this.checkDragging(this.dragCollection);\n const dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n }\n setClasses(panelCollection) {\n for (let i = 0; i < panelCollection.length; i++) {\n const element = panelCollection[i];\n const 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 setResizingClass(ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (let j = 0; j < this.availableClasses.length; j++) {\n const spanEle = this.createElement('span');\n let addClassValue;\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 setXYAttributes(element, panelModel) {\n const value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n }\n setXYDimensions(panelModel) {\n const cellHeight = this.getCellSize()[1];\n const cellWidth = this.getCellSize()[0];\n let widthValue;\n let 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 getRowColumnDragValues(args) {\n let value = [];\n const elementTop = parseFloat(args.element.style.top);\n const elementLeft = parseFloat(args.element.style.left);\n const row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n const col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n }\n checkForChanges(isInteracted, added, removed) {\n let changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (let i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n const changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n }\n enableDraggingContent(collections) {\n for (let i = 0; i < collections.length; i++) {\n const abortArray = ['.e-resize', '.' + dragRestrict];\n const 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: (args) => {\n this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n const 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 const 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 const row = this.getRowColumnDragValues(args)[0];\n const col = this.getRowColumnDragValues(args)[1];\n const 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 const panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n this.dragStopEventArgs = { event: args.event, element: args.element };\n this.resizeEvents();\n this.rows = this.maxRow(true);\n this.setHeightWidth();\n this.updateDragArea();\n }\n else {\n const currentPanel = this.getCellInstance(this.mainElement.id);\n for (i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', this.panelsInitialModel[i].row.toString());\n currentPanel.col = this.panelsInitialModel[i].col;\n currentPanel.row = this.panelsInitialModel[i].row;\n this.setPanelPosition(this.mainElement, this.panelsInitialModel[i].row, this.panelsInitialModel[i].col);\n this.updatePanelLayout(this.mainElement, currentPanel);\n }\n }\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n }\n },\n drag: (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 updatePanels() {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n updateDragArea() {\n this.dragCollection.forEach((dragobj) => {\n dragobj.setDragArea();\n });\n }\n updateRowsHeight(row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n }\n onDraggingStart(args) {\n const dragArgs = args;\n this.trigger('dragStart', dragArgs, () => {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n const eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n const 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 const panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n }\n cloneModels(source, target) {\n if (target === undefined) {\n target = [];\n }\n for (let i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (const k in source[i]) {\n target[i][`${k}`] = source[i][`${k}`];\n }\n }\n return target;\n }\n onDragStart(args) {\n let endCol;\n let endRow;\n let dragCol;\n if (!this.eventVar) {\n const col = dragCol = this.getRowColumnDragValues(args)[1];\n const 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 const 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 const model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n }\n getPanelBase(args) {\n let item;\n for (let 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 getPanel(row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n let sizeY = 1;\n while (row > -1) {\n let sizeX = 1;\n let col = column;\n while (col > -1) {\n const items = this.sortedArray[row];\n if (items) {\n const 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 setHolderPosition(args) {\n const sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n const col = parseInt(args.element.getAttribute('data-col'), 10);\n const row = parseInt(args.element.getAttribute('data-row'), 10);\n const sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n const widthValue = this.getCellSize()[0];\n const heightValue = this.getCellSize()[1];\n const top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n const left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n const cellSizeOne = this.getCellSize()[1];\n const 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 getCellInstance(idValue) {\n let currentCellInstance;\n for (let 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 addPanel(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 const 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 const 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 (let i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n const 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 updatePanel(panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n const 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 const cell = document.getElementById(panel.id);\n this.mainElement = cell;\n const 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 const 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 const 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 const cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n const headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n const contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n const 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 updateCloneArrayObject() {\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 serialize() {\n const cloneModel = this.cloneModels(this.panels);\n const customObject = [];\n for (let i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n }\n /**\n * Removes all the panels from the DashboardLayout.\n */\n removeAll() {\n this.removeAllCalled = true;\n for (let 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 const 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 removePanel(id) {\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n let removedPanel;\n for (let 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((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 movePanel(id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n const 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 const 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 setAttributes(value, ele) {\n for (let 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 resizePanel(id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n const panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n const ele = document.getElementById(id);\n const 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 destroy() {\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 (let i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n super.destroy();\n this.clearTemplate();\n this.renderReactTemplates();\n }\n removeAllPanel() {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n }\n setEnableRtl() {\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 updateCellSizeAndSpacing() {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (let i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n const ele = this.element.querySelectorAll('.e-panel')[i];\n const panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n }\n updatePanelsDynamically(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 checkForIDValues(panels) {\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach((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 onPropertyChanged(newProp) {\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (const prop of Object.keys(newProp)) {\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 const panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (let i = 0; i < panelElements.length; i++) {\n const eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n const 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((panel) => {\n this.setMinMaxValues(panel);\n if (this.maxColumnValue < panel.col || this.maxColumnValue < (panel.col + panel.sizeX)) {\n const 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 getPersistData() {\n const keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n }\n /* istanbul ignore next */\n mergePersistPanelData(persistedData) {\n const data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n const dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n const keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (const key of keys) {\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n }\n /* istanbul ignore next */\n mergePanels(sortedPanels, panels) {\n const storedColumns = sortedPanels;\n for (let i = 0; i < storedColumns.length; i++) {\n this.checkForIDValues(panels);\n const localPanel = panels.filter((pan) => pan.id === storedColumns[i].id)[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n }\n }\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n getModuleName() {\n return 'DashboardLayout';\n }\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);\nDashboardLayout = __decorate([\n NotifyPropertyChanges\n], DashboardLayout);\nexport { DashboardLayout };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nconst ITEMLISTCONTAINER = 'e-timeline-items';\nconst ITEMCONTAINER = 'e-timeline-item';\nconst OPPOSITECONTENT = 'e-opposite-content';\nconst DOTCONTAINER = 'e-dot-item';\nconst DOTCONTENT = 'e-dot';\nconst CONTENT = 'e-content';\nconst ITEMCONNECTOR = 'e-connector';\nconst VERTICAL = 'e-vertical';\nconst HORIZONTAL = 'e-horizontal';\nconst TIMELINEREVERSE = 'e-timeline-reverse';\nconst RTL = 'e-rtl';\nconst DISABLED = 'e-item-disabled';\nconst TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nexport class TimelineItem extends ChildProperty {\n}\n__decorate([\n Property('')\n], TimelineItem.prototype, \"dotCss\", void 0);\n__decorate([\n Property('')\n], TimelineItem.prototype, \"content\", void 0);\n__decorate([\n Property('')\n], TimelineItem.prototype, \"oppositeContent\", void 0);\n__decorate([\n Property(false)\n], TimelineItem.prototype, \"disabled\", void 0);\n__decorate([\n Property('')\n], TimelineItem.prototype, \"cssClass\", void 0);\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nlet Timeline = class Timeline extends Component {\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n constructor(options, element) {\n super(options, element);\n }\n preRender() {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n }\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n getModuleName() {\n return 'timeline';\n }\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n render() {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n }\n updateOrientation() {\n if (!(isNullOrUndefined(this.orientation))) {\n const orientation = this.orientation.toLowerCase();\n if (orientation === 'horizontal' || orientation === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation);\n }\n }\n }\n updateCssClass(addCss, removeCss = '') {\n let cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n this.element.classList.remove(...cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n this.element.classList.add(...cssClasses);\n }\n }\n updateRtl() {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n }\n updateAlign() {\n if (!(isNullOrUndefined(this.align))) {\n const align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n }\n updateReverse() {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n }\n renderItems() {\n this.haveOneSidecontent();\n for (let index = 0; index < this.items.length; index++) {\n const item = this.items[parseInt(index.toString(), 10)];\n const timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n const oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n const dotContainer = this.createElement('div', { className: DOTCONTAINER });\n const dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n const dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n const contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n timelineItem.classList.add(...item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n const eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, (args) => { this.timelineListEle.appendChild(args.element); });\n }\n }\n haveOneSidecontent() {\n let haveContent = false;\n let haveOppContent = false;\n for (let index = 0; index < this.items.length; index++) {\n const item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n haveContent = item.content.length > 0;\n }\n if (!haveOppContent) {\n haveOppContent = item.oppositeContent.length > 0;\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n }\n updateItemContent(isContent, item, index, contentEle) {\n const notCompile = !(this.isReact || this.isVue);\n const ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n }\n updateTemplateFunction() {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n }\n renderItemContent(index, isrerender, timelineItem) {\n const listItems = this.timelineListEle.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n timelineItem.classList.add(TEMPLATE);\n }\n const item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n }\n removeItemContent(ele) {\n ele.classList.remove(TEMPLATE);\n const firstChild = ele.firstElementChild;\n for (let i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n }\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n getTemplateFunction(template, notCompile = true) {\n if (typeof template === 'string') {\n let content = '';\n try {\n const tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n }\n removeItemElements() {\n const listItems = this.timelineListEle.querySelectorAll('li');\n for (let i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n }\n updateElementClassArray() {\n const classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n }\n updateContent() {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (let i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n }\n destroy() {\n super.destroy();\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n }\n updateItems(newProp, oldPropItems, index, item) {\n const timelineItemElements = this.timelineListEle.querySelectorAll('li');\n let dotEle;\n let contentEle;\n let oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n dotEle.classList.remove(...oldPropItems.dotCss.trim().split(' '));\n }\n dotEle.classList.add(...this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n timelineItemElements[parseInt(index.toString(), 10)].classList.remove(...oldPropItems.cssClass.trim().split(' '));\n }\n timelineItemElements[parseInt(index.toString(), 10)].classList.add(...item.cssClass.trim().split(' '));\n break;\n }\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'items':\n if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n const itemObject = Object.keys(newProp.items);\n for (let i = 0; i < itemObject.length; i++) {\n const index = parseInt(Object.keys(newProp.items)[i], 10);\n const property = Object.keys(newProp.items[index])[0];\n this.updateItems(property, oldProp.items[index], index, newProp.items[index]);\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n }\n};\n__decorate([\n Property(TimelineOrientation.Vertical)\n], Timeline.prototype, \"orientation\", void 0);\n__decorate([\n Property(TimelineAlign.After)\n], Timeline.prototype, \"align\", void 0);\n__decorate([\n Collection([], TimelineItem)\n], Timeline.prototype, \"items\", void 0);\n__decorate([\n Property('')\n], Timeline.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], Timeline.prototype, \"reverse\", void 0);\n__decorate([\n Property('')\n], Timeline.prototype, \"template\", void 0);\n__decorate([\n Event()\n], Timeline.prototype, \"created\", void 0);\n__decorate([\n Event()\n], Timeline.prototype, \"beforeItemRender\", void 0);\nTimeline = __decorate([\n NotifyPropertyChanges\n], Timeline);\nexport { Timeline };\n"],"names":["this","__decorate","setStyle","RTL","DISABLED"],"mappings":"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"}