@syncfusion/ej2-layouts 19.2.44 → 19.3.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/CHANGELOG.md +22 -0
- package/dist/ej2-layouts.umd.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js.map +1 -1
- package/dist/es6/ej2-layouts.es2015.js +103 -254
- package/dist/es6/ej2-layouts.es2015.js.map +1 -1
- package/dist/es6/ej2-layouts.es5.js +103 -255
- package/dist/es6/ej2-layouts.es5.js.map +1 -1
- package/dist/global/ej2-layouts.min.js +2 -2
- package/dist/global/ej2-layouts.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/helpers/e2e/dashboardHelper.d.ts +63 -0
- package/helpers/e2e/dashboardHelper.js +97 -0
- package/helpers/e2e/index.d.ts +1 -0
- package/helpers/e2e/index.js +1 -0
- package/package.json +6 -6
- package/src/dashboard-layout/dashboard-layout-model.d.ts +1 -22
- package/src/dashboard-layout/dashboard-layout.d.ts +0 -23
- package/src/dashboard-layout/dashboard-layout.js +32 -105
- package/src/splitter/splitter-model.d.ts +1 -1
- package/src/splitter/splitter.d.ts +1 -1
- package/src/splitter/splitter.js +73 -151
- package/styles/avatar/_bootstrap5-dark-definition.scss +1 -0
- package/styles/avatar/_bootstrap5-definition.scss +25 -0
- package/styles/avatar/_layout.scss +5 -5
- package/styles/avatar/_tailwind-dark-definition.scss +1 -25
- package/styles/avatar/bootstrap5-dark.css +61 -0
- package/styles/avatar/bootstrap5-dark.scss +3 -0
- package/styles/avatar/bootstrap5.css +61 -0
- package/styles/avatar/bootstrap5.scss +3 -0
- package/styles/bootstrap-dark.css +8 -0
- package/styles/bootstrap.css +8 -0
- package/styles/bootstrap4.css +8 -0
- package/styles/bootstrap5-dark.css +1618 -0
- package/styles/bootstrap5-dark.scss +4 -0
- package/styles/bootstrap5.css +1618 -0
- package/styles/bootstrap5.scss +4 -0
- package/styles/card/_bootstrap5-dark-definition.scss +1 -0
- package/styles/card/_bootstrap5-definition.scss +119 -0
- package/styles/card/_fabric-dark-definition.scss +5 -18
- package/styles/card/_layout.scss +2 -2
- package/styles/card/_tailwind-dark-definition.scss +1 -122
- package/styles/card/_tailwind-definition.scss +5 -9
- package/styles/card/bootstrap5-dark.css +593 -0
- package/styles/card/bootstrap5-dark.scss +3 -0
- package/styles/card/bootstrap5.css +593 -0
- package/styles/card/bootstrap5.scss +3 -0
- package/styles/card/fabric-dark.css +12 -12
- package/styles/card/tailwind-dark.css +2 -3
- package/styles/card/tailwind.css +0 -1
- package/styles/dashboard-layout/_bootstrap5-dark-definition.scss +1 -0
- package/styles/dashboard-layout/_bootstrap5-definition.scss +109 -0
- package/styles/dashboard-layout/_layout.scss +14 -5
- package/styles/dashboard-layout/_tailwind-dark-definition.scss +1 -109
- package/styles/dashboard-layout/_tailwind-definition.scss +27 -28
- package/styles/dashboard-layout/_theme.scss +4 -4
- package/styles/dashboard-layout/bootstrap5-dark.css +393 -0
- package/styles/dashboard-layout/bootstrap5-dark.scss +4 -0
- package/styles/dashboard-layout/bootstrap5.css +393 -0
- package/styles/dashboard-layout/bootstrap5.scss +4 -0
- package/styles/dashboard-layout/icons/_bootstrap5-dark.scss +1 -0
- package/styles/dashboard-layout/icons/_bootstrap5.scss +81 -0
- package/styles/dashboard-layout/material-dark.css +3 -3
- package/styles/dashboard-layout/tailwind-dark.css +10 -8
- package/styles/dashboard-layout/tailwind.css +5 -3
- package/styles/fabric-dark.css +20 -12
- package/styles/fabric.css +8 -0
- package/styles/highcontrast-light.css +8 -0
- package/styles/highcontrast.css +8 -0
- package/styles/material-dark.css +19 -11
- package/styles/material.css +8 -0
- package/styles/splitter/_bootstrap5-dark-definition.scss +1 -0
- package/styles/splitter/_bootstrap5-definition.scss +26 -0
- package/styles/splitter/_tailwind-dark-definition.scss +1 -23
- package/styles/splitter/_tailwind-definition.scss +14 -11
- package/styles/splitter/bootstrap-dark.css +8 -0
- package/styles/splitter/bootstrap.css +8 -0
- package/styles/splitter/bootstrap4.css +8 -0
- package/styles/splitter/bootstrap5-dark.css +568 -0
- package/styles/splitter/bootstrap5-dark.scss +4 -0
- package/styles/splitter/bootstrap5.css +568 -0
- package/styles/splitter/bootstrap5.scss +4 -0
- package/styles/splitter/fabric-dark.css +8 -0
- package/styles/splitter/fabric.css +8 -0
- package/styles/splitter/highcontrast-light.css +8 -0
- package/styles/splitter/highcontrast.css +8 -0
- package/styles/splitter/icons/_bootstrap-dark.scss +12 -0
- package/styles/splitter/icons/_bootstrap.scss +12 -0
- package/styles/splitter/icons/_bootstrap4.scss +12 -0
- package/styles/splitter/icons/_bootstrap5-dark.scss +1 -0
- package/styles/splitter/icons/_bootstrap5.scss +39 -0
- package/styles/splitter/icons/_fabric-dark.scss +12 -0
- package/styles/splitter/icons/_fabric.scss +12 -0
- package/styles/splitter/icons/_highcontrast-light.scss +12 -0
- package/styles/splitter/icons/_highcontrast.scss +12 -0
- package/styles/splitter/icons/_material-dark.scss +12 -0
- package/styles/splitter/icons/_material.scss +12 -0
- package/styles/splitter/icons/_tailwind-dark.scss +1 -39
- package/styles/splitter/icons/_tailwind.scss +12 -0
- package/styles/splitter/material-dark.css +16 -8
- package/styles/splitter/material.css +8 -0
- package/styles/splitter/tailwind-dark.css +14 -7
- package/styles/splitter/tailwind.css +8 -1
- package/styles/tailwind-dark.css +26 -18
- package/styles/tailwind.css +13 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.allPanes = [];\n _this.paneOrder = [];\n _this.separatorOrder = [];\n _this.allBars = [];\n _this.previousCoordinates = {};\n _this.currentCoordinates = {};\n _this.updatePrePaneInPercentage = false;\n _this.updateNextPaneInPercentage = false;\n _this.panesDimensions = [];\n _this.border = 0;\n _this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n _this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n _this.iconsDelay = 300;\n _this.templateElement = [];\n _this.collapseFlag = false;\n _this.expandFlag = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.preRender = function () {\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n if (!this.checkBlazor()) {\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation_1 = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation_1);\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n if (!this.checkBlazor()) {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n }\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n if (!this.checkBlazor()) {\n this.setRTL(this.enableRtl);\n }\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.checkBlazor = function () {\n return isBlazor() && this.isServerRendered;\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var _this = this;\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n var proxy;\n if (this.checkBlazor()) {\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(SPLIT_BAR)) {\n this.allBars.push(this.element.children[j]);\n }\n }\n }\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n if (!this.checkBlazor()) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n if (this.checkBlazor()) {\n proxy = this;\n separator = this.allBars[i];\n this.updateIconClass();\n }\n if (!this.checkBlazor()) {\n this.wireClickEvents();\n }\n if (this.checkBlazor() && !isNullOrUndefined(separator)) {\n this.currentSeparator = separator;\n this.addMouseActions(separator);\n this.wireClickEvents();\n separator.addEventListener('focus', function () {\n if (document.activeElement.classList.contains('e-split-bar')) {\n proxy.currentSeparator = document.activeElement;\n proxy.currentSeparator.classList.add(SPLIT_BAR_ACTIVE);\n }\n _this.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n proxy.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n }\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0; j < this.allBars.length; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (this.paneSettings[i].min !== null) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if (this.allPanes[i].offsetWidth < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - this.allPanes[i].offsetWidth;\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePane.offsetWidth + sizeDiff) + '%'\n : (updatePane.offsetWidth + sizeDiff) + 'px';\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPane.offsetWidth - sizeDiff) + '%' : (flexPane.offsetWidth - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n EventHandler.add(document, 'mousemove', this.onMouseMove, this);\n EventHandler.add(document, 'mouseup', this.onMouseUp, this);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.add(document, touchMoveEvent, this.onMouseMove, this);\n EventHandler.add(document, touchEndEvent, this.onMouseUp, this);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.remove(document, 'mousemove', this.onMouseMove);\n EventHandler.remove(document, 'mouseup', this.onMouseUp);\n EventHandler.remove(document, touchMoveEvent, this.onMouseMove);\n EventHandler.remove(document, touchEndEvent, this.onMouseUp);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n var totalWidth = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n if (totalWidth > this.element.offsetWidth) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n else {\n panes[i].style.flexGrow = '';\n }\n if (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\n if (visiblePane && !this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n if (this.checkBlazor() && this.allBars.length < 1) {\n this.allBars = selectAll('.' + separator, this.element);\n }\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = isBlazor() ? {\n element: this.element,\n event: e,\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n } : {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.convertPixelToNumber(this.previousPaneHeightWidth);\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n if (!(this.allPanes.length > 2)) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = isBlazor() ? {\n event: e,\n element: this.element,\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n } : {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n if (isBlazor() && !this.isStringTemplate) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), this.isStringTemplate);\n }\n else {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n if (!this.checkBlazor()) {\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n if (this.checkBlazor() && child[i].classList.contains(PANE)) {\n this.allPanes.push(child[i]);\n }\n else if (!this.checkBlazor()) {\n this.allPanes.push(child[i]);\n }\n if (!this.checkBlazor()) {\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n if (!this.checkBlazor()) {\n _super.prototype.destroy.call(this);\n }\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n if (this.checkBlazor()) {\n var splitNodes = this.element.children;\n for (var i = splitNodes.length - 1; i >= 0; i--) {\n detach(splitNodes[i]);\n }\n }\n else {\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, updateBlazorTemplate, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, isBlazor, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isBlazor = false;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.isBlazor = (isBlazor() && this.isServerRendered);\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.updateServerPanelData();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.updateServerPanelData = function () {\n if (isBlazor() && this.isServerRendered) {\n this.setProperties({ panels: this.panels }, true);\n this.allowServerDataBinding = true;\n this.serverDataBind();\n }\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n td.setAttribute('id', '' + j);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0\n && !(this.isBlazor && this.panels.length > 0)) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n this.isBlazor = false;\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.isBlazor = (isBlazor() && this.isServerRendered);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n if (!this.isBlazor) {\n this.setEnableRtl();\n }\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n if (!this.isBlazor) {\n addClass([cellElement], [panel, panelTransition]);\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n if (!this.isBlazor) {\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n if (!this.isBlazor) {\n addClass([headerTemplateElement], [header]);\n }\n if (!cellElement.querySelector('.e-panel-header') && !this.isBlazor) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n updateBlazorTemplate(id, 'HeaderTemplate', panelModel);\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content') && !this.isBlazor) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n updateBlazorTemplate(id, 'ContentTemplate', panelModel);\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + this.elementWidth + dX > this.maxLeft) {\n currentX = this.maxLeft - this.elementX - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n this.elementWidth += currentX;\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.updateServerPanelData();\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + item.sizeX > this.columns) {\n item.sizeX = item.sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (item.minSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (item.minSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.updatePanelLayout(ele, cellInstance);\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n if (this.addPanelCalled && this.isBlazor) {\n var panelProp = this.getActualProperties(updatedPanel[i]);\n panelProp.row = i;\n panelProp.col = 0;\n this.panelPropertyChange(updatedPanel[i], panelProp);\n this.setPanelPosition(panelElement, i, 0);\n }\n else {\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 }\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n heightValue = ((this.maxRow()) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.isBlazor) {\n cellElement = document.getElementById(panel.id);\n }\n else {\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 }\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n if (!this.isBlazor) {\n this.setXYAttributes(cellElement, panel);\n }\n else {\n var bodyElement = cellElement.querySelector('.e-panel-content');\n if (bodyElement) {\n var headerHeight = cellElement.querySelector('.e-panel-header') ?\n window.getComputedStyle(cellElement.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(bodyElement, { height: contentHeightValue });\n }\n }\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n this.allowServerDataBinding = false;\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n if (!(this.isBlazor && this.panels.length > 0)) {\n this.setMinMaxValues(cells[j]);\n }\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (!this.isBlazor) {\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n }\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateServerPanelData();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n if (isBlazor()) {\n dragArgs.bindEvents(args.element);\n }\n });\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][k] = source[i][k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.allowServerDataBinding = false;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n if (this.isBlazor) {\n cell.style.removeProperty('visibility');\n }\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 if (this.isBlazor) {\n cell.style.removeProperty('visibility');\n }\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n this.allowServerDataBinding = true;\n this.serverDataBind();\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.updateServerPanelData();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.updateServerPanelData();\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateServerPanelData();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateServerPanelData();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.isBlazor = false;\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n this.isBlazor = (isBlazor() && this.isServerRendered);\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","allPanes","paneOrder","separatorOrder","allBars","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","border","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","add","preRender","onReportWindowSize","reportWindowSize","bind","wrapper","cloneNode","wrapperParent","parentElement","checkBlazor","removeClass","orientation_1","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","triggerResizing","collapsible","expand","collapse","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","min","max","content","paneAPI","slice","forEach","el","detach","restoreElem","isBlazor","isServerRendered","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","getComputedStyle","marginLeft","marginTop","marginBottom","diff","minValue","paneMinRange","updatePane","flexPane","convertPixelToNumber","toString","sizeDiff","isPercent","convertPixelToPercentage","wireResizeEvents","onMouseMove","onMouseUp","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","prevPaneIndex","nextPaneIndex","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","flexGrow","staticPane","status","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","previousElementSibling","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","currentIndex","array","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","preventDefault","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","top","window","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","isReact","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","isStringTemplate","id","childElement","nodeName","destroy","isDestroyed","attributes","splitNodes","refreshing","clearTemplate","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","updateServerPanelData","allowServerDataBinding","serverDataBind","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","updateBlazorTemplate","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToColumns","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","len","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","filter","panel","updatedPanel","updatedRows","updatedHeight","addPanelCalled","getActualProperties","getRowColumn","setHeightWidth","heightValue","widthValue","setXYDimensions","renderCell","dashBoardCell","bodyElement","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","k","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_6","this_4","localPanel","pan"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-layouts.umd.min.js","sources":["../src/splitter/splitter.js","../src/dashboard-layout/dashboard-layout.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.allPanes = [];\n _this.paneOrder = [];\n _this.separatorOrder = [];\n _this.allBars = [];\n _this.previousCoordinates = {};\n _this.currentCoordinates = {};\n _this.updatePrePaneInPercentage = false;\n _this.updateNextPaneInPercentage = false;\n _this.panesDimensions = [];\n _this.border = 0;\n _this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n _this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n _this.iconsDelay = 300;\n _this.templateElement = [];\n _this.collapseFlag = false;\n _this.expandFlag = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.preRender = function () {\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n var min;\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n var proxy;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0; j < this.allBars.length; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if (this.allPanes[i].offsetWidth < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - this.allPanes[i].offsetWidth;\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePane.offsetWidth + sizeDiff) + '%'\n : (updatePane.offsetWidth + sizeDiff) + 'px';\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPane.offsetWidth - sizeDiff) + '%' : (flexPane.offsetWidth - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n EventHandler.add(document, 'mousemove', this.onMouseMove, this);\n EventHandler.add(document, 'mouseup', this.onMouseUp, this);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.add(document, touchMoveEvent, this.onMouseMove, this);\n EventHandler.add(document, touchEndEvent, this.onMouseUp, this);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.remove(document, 'mousemove', this.onMouseMove);\n EventHandler.remove(document, 'mouseup', this.onMouseUp);\n EventHandler.remove(document, touchMoveEvent, this.onMouseMove);\n EventHandler.remove(document, touchEndEvent, this.onMouseUp);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_UP)) {\n this.collapseAction(e);\n }\n if (icon.classList.contains(ARROW_RIGHT) || icon.classList.contains(ARROW_DOWN)) {\n this.expandAction(e);\n }\n var totalWidth = 0;\n var children = this.element.children;\n for (var i = 0; i < children.length; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n if (totalWidth > this.element.offsetWidth) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.nextPane], EXPAND_PANE);\n removeClass([this.previousPane], collapseClass);\n addClass([this.previousPane], EXPAND_PANE);\n addClass([this.nextPane], collapseClass);\n if (this.expandFlag) {\n this.updatePaneSettings(this.nextPaneIndex, true);\n }\n }\n else {\n removeClass([this.previousPane], collapseClass);\n removeClass([this.nextPane], EXPAND_PANE);\n if (this.expandFlag) {\n this.updatePaneSettings(this.prevPaneIndex, false);\n }\n }\n this.updateIconsOnExpand(e);\n this.previousPane.setAttribute('aria-expanded', 'true');\n this.nextPane.setAttribute('aria-expanded', 'false');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.checkStaticPanes = function () {\n var staticPane = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE) && staticPane) {\n if (this.allPanes[i].classList.contains(STATIC_PANE)) {\n staticPane = true;\n }\n else {\n staticPane = false;\n }\n }\n }\n return staticPane;\n };\n Splitter.prototype.updateFlexGrow = function (status) {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n else {\n panes[i].style.flexGrow = '';\n }\n if (status && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n this.nextPane.style.flexGrow = '1';\n }\n if (visiblePane && !this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e) {\n this.splitterProperty();\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE)) {\n addClass([e.target], HIDE_ICON);\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n this.resizableModel(this.currentBarIndex, false);\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (this.previousPane.previousElementSibling && !this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE)) {\n if (this.previousPane.classList.contains(COLLAPSE_PANE) && this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.leftArrow);\n }\n }\n if (!isNullOrUndefined(this.prevBar)) {\n this.resizableModel(this.currentBarIndex - 1, false);\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneExpanded) {\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!this.splitInstance.nextPaneNextEle.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.currentBarIndex + 1].resizable) {\n this.resizableModel(this.currentBarIndex + 1, true);\n }\n if (!this.paneSettings[this.currentBarIndex].collapsible) {\n addClass([e.target], HIDE_ICON);\n }\n if (this.previousPane && this.prevPaneIndex === 0 && (this.paneSettings[this.prevPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.currentSeparator, this.leftArrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.getPrevBar(this.nextPaneIndex), this.rightArrow);\n }\n if (!(this.previousPane.classList.contains(COLLAPSE_PANE)) && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n if (!isNullOrUndefined(this.nextBar)) {\n if (this.nextPane.nextElementSibling && (this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex + 1].collapsible) ||\n (!this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.nextPaneIndex].collapsible)) {\n this.showTargetBarIcon(this.nextBar, this.leftArrow);\n }\n else if (!this.paneSettings[this.splitInstance.nextPaneIndex + 1].collapsible &&\n this.paneSettings[this.currentBarIndex]) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n !this.nextPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && !this.paneSettings[this.nextPaneIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n this.splitterDetails(e);\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n if (this.nextPane.classList.contains(COLLAPSE_PANE)) {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.nextPaneIndex, false);\n }\n }\n else {\n removeClass([this.previousPane], EXPAND_PANE);\n removeClass([this.nextPane], collapseClass);\n addClass([this.nextPane], EXPAND_PANE);\n addClass([this.previousPane], collapseClass);\n if (!this.collapseFlag) {\n this.updatePaneSettings(this.prevPaneIndex, true);\n }\n }\n this.updateIconsOnCollapse(e);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.nextPane.setAttribute('aria-expanded', 'true');\n this.updateFlexGrow(this.checkStaticPanes());\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcon = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnExpand = function (e) {\n this.splitterProperty();\n addClass([e.target], HIDE_ICON);\n if (!this.splitInstance.prevPaneExpanded && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n removeClass([e.target], HIDE_ICON);\n }\n if (this.paneSettings[this.currentBarIndex].resizable) {\n this.resizableModel(this.currentBarIndex, true);\n }\n if (!isNullOrUndefined(this.prevBar) &&\n !this.splitInstance.prevPanePreEle.classList.contains(COLLAPSE_PANE)) {\n if (this.paneSettings[this.currentBarIndex - 1].resizable) {\n this.resizableModel(this.currentBarIndex - 1, true);\n }\n if (this.paneSettings[this.prevPaneIndex].collapsible) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex - 1].collapsible) {\n this.hideTargetBarIcon(this.prevBar, this.arrow);\n if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else if (this.paneSettings[this.currentBarIndex].collapsible &&\n !this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n else {\n if (this.previousPane.previousElementSibling && this.paneSettings[this.prevPaneIndex].collapsible &&\n (this.previousPane.previousElementSibling.classList.contains(COLLAPSE_PANE) &&\n this.paneSettings[this.prevPaneIndex - 1].collapsible)) {\n this.showTargetBarIcon(this.prevBar, this.rightArrow);\n }\n if (!this.paneSettings[this.currentBarIndex + 1].collapsible) {\n this.hideTargetBarIcon(this.currentSeparator, this.rightArrow);\n }\n }\n }\n else if (this.splitInstance.prevPaneExpanded && this.splitInstance.nextPaneCollapsed) {\n this.resizableModel(this.currentBarIndex, false);\n this.resizableModel(this.currentBarIndex + 1, false);\n if (this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcon();\n }\n if (!isNullOrUndefined(this.nextBar)) {\n this.hideTargetBarIcon(this.nextBar, this.arrow);\n }\n if (this.nextPane && this.nextPaneIndex === this.allPanes.length - 1 && (!this.paneSettings[this.nextPaneIndex].collapsible &&\n this.splitInstance.nextPaneCollapsed)) {\n this.hideTargetBarIcon(this.currentSeparator, this.arrow);\n }\n if (!(this.nextPaneIndex === this.allPanes.length - 1) && this.nextPane.nextElementSibling &&\n this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE)\n && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showTargetBarIcon(this.nextBar, this.rightArrow);\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.convertPixelToNumber(this.previousPaneHeightWidth);\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n if (!(this.allPanes.length > 2)) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar draggable = 'e-draggable';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n td.setAttribute('id', '' + j);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + this.elementWidth + dX > this.maxLeft) {\n currentX = this.maxLeft - this.elementX - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n this.elementWidth += currentX;\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + item.sizeX > this.columns) {\n item.sizeX = item.sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (item.minSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (item.minSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.updatePanelLayout(ele, cellInstance);\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n heightValue = ((this.maxRow()) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[key].row, this.overlapElement, this.collisionChecker[key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n for (var i = 0; i < collections.length; i++) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this.element,\n isDragScroll: true,\n handle: this.draggableHandle ? this.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this.onDraggingStart.bind(this),\n dragStop: function (args) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.trigger('dragStop', args);\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this.dragCollection.indexOf(this.dragobj) === -1) {\n this.dragCollection.push(this.dragobj);\n }\n }\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n });\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][k] = source[i][k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","HORIZONTAL_PANE","VERTICAL_PANE","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","SPLIT_H_BAR","SPLIT_V_BAR","STATIC_PANE","SCROLL_PANE","RESIZE_BAR","RESIZABLE_BAR","SPLIT_BAR_HOVER","SPLIT_BAR_ACTIVE","HIDE_HANDLER","DISABLED","COLLAPSIBLE","NAVIGATE_ARROW","ARROW_RIGHT","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","EXPAND_PANE","COLLAPSE_PANE","PANE_HIDDEN","RESIZABLE_PANE","LAST_BAR","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","allPanes","paneOrder","separatorOrder","allBars","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","border","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","destroyPaneSettings","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","index","parseInt","changedPropsCount","j","property","newValue","isNullOrUndefined","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","add","preRender","onReportWindowSize","reportWindowSize","bind","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","getModuleName","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","onDocumentClick","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","extend","cancel","helper","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","content","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","proxy","addMouseActions","getPaneDetails","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","setTimeout","clearTimeout","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","updateSplitterSize","removeEventListener","iswindowResize","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","convertPixelToPercentage","wireResizeEvents","onMouseMove","onMouseUp","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","icon","collapseAction","expandAction","splitterDetails","beforeExpandArgs","expandPane","expandEventArgs","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","checkStaticPanes","flexGrow","staticPane","status","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","showCurrentBarIcon","currentBarIndex","prevBar","previousElementSibling","splitInstance","prevPaneCollapsed","nextPaneExpanded","nextPaneNextEle","getPrevBar","nextBar","collapsePane","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneCollapsed","prevPanePreEle","currentIndex","array","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","top","window","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","isReact","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","clearTemplate","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","preventSelect","dragging","drag","responsive","panelContent","panelContainer","header","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","getElementById","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","disablePanel","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","refresh","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","closest","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","getResizeRowColumn","upTarget","undefined","allowFloating","moveItemsUpwards","checkForChanges","isChanged","pixelsToColumns","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","curColWidth","floor","l","sortItem","rowIndex","colIndex","len","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","cellInstance","removeResizeClasses","checkDragging","sortPanels","_loop_1","_loop_2","this_1","filter","panel","updatedPanel","updatedRows","updatedHeight","getRowColumn","setHeightWidth","heightValue","widthValue","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","_loop_3","_loop_4","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","checkCollision","swapAvailability","available","eleModel","count","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","proxy_1","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","k","eleRow_1","excludeElements","collisionPanel","clone","proxy_2","overlapElementRow1","_loop_5","rowVal","this_3","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","source","endCol","dragCol","excludeItems","cellSizeOne","cellSizeZero","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","_loop_6","this_4","localPanel","pan"],"mappings":"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"}
|