@syncfusion/ej2-treegrid 20.1.55 → 20.1.56-97113
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 +16 -1
- package/CHANGELOG.md +15 -32
- package/README.md +64 -51
- package/dist/ej2-treegrid.min.js +1 -0
- package/dist/ej2-treegrid.umd.min.js +1 -10
- package/dist/ej2-treegrid.umd.min.js.map +1 -1
- package/dist/es6/ej2-treegrid.es2015.js +2046 -1076
- package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
- package/dist/es6/ej2-treegrid.es5.js +2131 -1113
- package/dist/es6/ej2-treegrid.es5.js.map +1 -1
- package/dist/global/ej2-treegrid.min.js +1 -10
- package/dist/global/ej2-treegrid.min.js.map +1 -1
- package/dist/global/index.d.ts +0 -9
- package/helpers/e2e/index.js +8 -6
- package/helpers/e2e/treegridhelper.js +82 -65
- package/package.json +64 -64
- package/src/treegrid/actions/batch-edit.js +115 -87
- package/src/treegrid/actions/clipboard.d.ts +3 -2
- package/src/treegrid/actions/clipboard.js +37 -35
- package/src/treegrid/actions/context-menu.js +53 -1
- package/src/treegrid/actions/crud-actions.js +67 -56
- package/src/treegrid/actions/detail-row.js +7 -7
- package/src/treegrid/actions/edit.d.ts +1 -0
- package/src/treegrid/actions/edit.js +168 -115
- package/src/treegrid/actions/excel-export.js +2 -2
- package/src/treegrid/actions/filter.js +13 -16
- package/src/treegrid/actions/freeze-column.d.ts +1 -0
- package/src/treegrid/actions/freeze-column.js +48 -11
- package/src/treegrid/actions/infinite-scroll.js +25 -22
- package/src/treegrid/actions/logger.js +10 -10
- package/src/treegrid/actions/page.d.ts +1 -0
- package/src/treegrid/actions/page.js +21 -8
- package/src/treegrid/actions/reorder.js +2 -2
- package/src/treegrid/actions/rowdragdrop.js +142 -86
- package/src/treegrid/actions/selection.d.ts +1 -0
- package/src/treegrid/actions/selection.js +71 -39
- package/src/treegrid/actions/sort.js +17 -5
- package/src/treegrid/actions/summary.js +24 -24
- package/src/treegrid/actions/toolbar.js +45 -43
- package/src/treegrid/actions/virtual-scroll.js +7 -4
- package/src/treegrid/base/constant.d.ts +30 -0
- package/src/treegrid/base/constant.js +30 -0
- package/src/treegrid/base/data.d.ts +1 -0
- package/src/treegrid/base/data.js +257 -57
- package/src/treegrid/base/treegrid-model.d.ts +50 -34
- package/src/treegrid/base/treegrid.d.ts +57 -35
- package/src/treegrid/base/treegrid.js +363 -200
- package/src/treegrid/enum.d.ts +8 -2
- package/src/treegrid/enum.js +2 -0
- package/src/treegrid/models/column.d.ts +6 -6
- package/src/treegrid/models/column.js +9 -9
- package/src/treegrid/models/index.d.ts +2 -0
- package/src/treegrid/models/index.js +1 -0
- package/src/treegrid/models/loading-indicator-model.d.ts +20 -0
- package/src/treegrid/models/loading-indicator.d.ts +17 -0
- package/src/treegrid/models/loading-indicator.js +34 -0
- package/src/treegrid/renderer/render.d.ts +4 -4
- package/src/treegrid/renderer/render.js +33 -24
- package/src/treegrid/renderer/virtual-row-model-generator.js +15 -6
- package/src/treegrid/renderer/virtual-tree-content-render.d.ts +5 -2
- package/src/treegrid/renderer/virtual-tree-content-render.js +224 -106
- package/src/treegrid/renderer/virtual-tree-freeze-render.d.ts +59 -0
- package/src/treegrid/renderer/virtual-tree-freeze-render.js +163 -0
- package/src/treegrid/utils.js +13 -12
- package/styles/bootstrap-dark.css +14 -1
- package/styles/bootstrap.css +14 -1
- package/styles/bootstrap4.css +14 -1
- package/styles/bootstrap5-dark.css +16 -2
- package/styles/bootstrap5.css +16 -2
- package/styles/fabric-dark.css +14 -1
- package/styles/fabric.css +14 -1
- package/styles/fluent-dark.css +15 -2
- package/styles/fluent.css +15 -2
- package/styles/highcontrast-light.css +14 -1
- package/styles/highcontrast.css +14 -1
- package/styles/material-dark.css +14 -1
- package/styles/material.css +14 -1
- package/styles/tailwind-dark.css +14 -1
- package/styles/tailwind.css +14 -1
- package/styles/treegrid/_all.scss +1 -1
- package/styles/treegrid/_bootstrap-dark-definition.scss +1 -1
- package/styles/treegrid/_bootstrap-definition.scss +1 -2
- package/styles/treegrid/_bootstrap4-definition.scss +0 -1
- package/styles/treegrid/_bootstrap5-definition.scss +0 -1
- package/styles/treegrid/_fabric-dark-definition.scss +1 -2
- package/styles/treegrid/_fabric-definition.scss +1 -2
- package/styles/treegrid/_fluent-definition.scss +0 -1
- package/styles/treegrid/_fusionnew-definition.scss +28 -0
- package/styles/treegrid/_highcontrast-definition.scss +0 -1
- package/styles/treegrid/_highcontrast-light-definition.scss +0 -2
- package/styles/treegrid/_icons.scss +12 -1
- package/styles/treegrid/_layout.scss +4 -4
- package/styles/treegrid/_material-definition.scss +0 -1
- package/styles/treegrid/_material3-definition.scss +28 -0
- package/styles/treegrid/_tailwind-definition.scss +0 -1
- package/styles/treegrid/_theme.scss +1 -0
- package/styles/treegrid/bootstrap-dark.css +14 -1
- package/styles/treegrid/bootstrap.css +14 -1
- package/styles/treegrid/bootstrap4.css +14 -1
- package/styles/treegrid/bootstrap5-dark.css +16 -2
- package/styles/treegrid/bootstrap5.css +16 -2
- package/styles/treegrid/fabric-dark.css +14 -1
- package/styles/treegrid/fabric.css +14 -1
- package/styles/treegrid/fluent-dark.css +15 -2
- package/styles/treegrid/fluent.css +15 -2
- package/styles/treegrid/highcontrast-light.css +14 -1
- package/styles/treegrid/highcontrast.css +14 -1
- package/styles/treegrid/icons/_bootstrap-dark.scss +12 -1
- package/styles/treegrid/icons/_bootstrap.scss +12 -1
- package/styles/treegrid/icons/_bootstrap4.scss +12 -1
- package/styles/treegrid/icons/_bootstrap5.scss +11 -0
- package/styles/treegrid/icons/_fabric-dark.scss +12 -1
- package/styles/treegrid/icons/_fabric.scss +12 -1
- package/styles/treegrid/icons/_fluent.scss +11 -0
- package/styles/treegrid/icons/_fusionnew.scss +26 -0
- package/styles/treegrid/icons/_highcontrast-light.scss +12 -1
- package/styles/treegrid/icons/_highcontrast.scss +11 -0
- package/styles/treegrid/icons/_material-dark.scss +12 -1
- package/styles/treegrid/icons/_material.scss +11 -0
- package/styles/treegrid/icons/_material3.scss +26 -0
- package/styles/treegrid/icons/_tailwind-dark.scss +11 -0
- package/styles/treegrid/icons/_tailwind.scss +11 -0
- package/styles/treegrid/material-dark.css +14 -1
- package/styles/treegrid/material.css +14 -1
- package/styles/treegrid/tailwind-dark.css +14 -1
- package/styles/treegrid/tailwind.css +14 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-treegrid.umd.min.js","sources":["../src/treegrid/utils.js","../src/treegrid/actions/crud-actions.js","../src/treegrid/models/column.js","../src/treegrid/models/filter-settings.js","../src/treegrid/models/textwrap-settings.js","../src/treegrid/actions/logger.js","../src/treegrid/base/constant.js","../src/treegrid/actions/clipboard.js","../src/treegrid/actions/selection.js","../src/treegrid/actions/print.js","../src/treegrid/models/search-settings.js","../src/treegrid/models/selection-settings.js","../src/treegrid/renderer/render.js","../src/treegrid/base/data.js","../src/treegrid/enum.js","../src/treegrid/models/page-settings.js","../src/treegrid/models/summary.js","../src/treegrid/models/edit-settings.js","../src/treegrid/models/sort-settings.js","../src/treegrid/models/infinite-scroll-settings.js","../src/treegrid/base/treegrid.js","../src/treegrid/actions/reorder.js","../src/treegrid/actions/resize.js","../src/treegrid/actions/rowdragdrop.js","../src/treegrid/models/rowdrop-settings.js","../src/treegrid/renderer/virtual-row-model-generator.js","../src/treegrid/actions/filter.js","../src/treegrid/actions/excel-export.js","../src/treegrid/actions/pdf-export.js","../src/treegrid/actions/page.js","../src/treegrid/actions/toolbar.js","../src/treegrid/actions/summary.js","../src/treegrid/actions/sort.js","../src/treegrid/actions/column-menu.js","../src/treegrid/actions/context-menu.js","../src/treegrid/actions/batch-edit.js","../src/treegrid/actions/edit.js","../src/treegrid/actions/command-column.js","../src/treegrid/actions/detail-row.js","../src/treegrid/renderer/virtual-tree-content-render.js","../src/treegrid/actions/virtual-scroll.js","../src/treegrid/actions/freeze-column.js","../src/treegrid/actions/column-chooser.js","../src/treegrid/actions/infinite-scroll.js"],"sourcesContent":["import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[i].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[i]);\n if (hasChild) {\n datas.push(records[i]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords;\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[i]);\n if (childRecords[i].hasChildRecords || (!isNullOrUndefined(childRecords[i].childRecords) &&\n childRecords[i].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[i]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[i]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[j]] = array[i][keys[j]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[idFilter][value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[id][value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[k][key]) === 'object') {\n modifiedData[k] = modifiedData[k][key];\n }\n var keys = modifiedData[k].taskData ? Object.keys(modifiedData[k].taskData) :\n Object.keys(modifiedData[k]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[i][key] === modifiedData[k][key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[i];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[control.idMapping] === currentData_1[control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[p][control.idMapping] === currentData_1[control.idMapping]) {\n if (!control.enableImmutableMode) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[i], keys[j]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[changedRecords].length === 0))\n || keys[j] === columnName)) {\n var editedData = getParentData(control, modifiedData[k].uniqueID);\n treeData[i][keys[j]] = modifiedData[k][keys[j]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[j]] = editedData[keys[j]] = treeData[i][keys[j]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[control.parentIdMapping] = treeData[i][control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[i], control.childMapping)) {\n treeData[i][control.childMapping] = [];\n }\n treeData[i][control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[i], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[i][control.childMapping])) {\n if (removeChildRecords(treeData[i][control.childMapping], modifiedData[k], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[i], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[addRowIndex];\n if (!isNullOrUndefined(currentdata) && currentdata[primaryKeys] === details.value[primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[j][key] === modifiedData[key] ||\n (isSelfReference && childRecords[j][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[j], keys[i]) && (control.editSettings.mode !== 'Cell' || keys[i] === columnName)) {\n editedData[keys[i]] = editedData.taskData[keys[i]] = childRecords[j][keys[i]] = modifiedData[keys[i]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[control.parentIdMapping] = childRecords[j][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[j], control.childMapping)) {\n childRecords[j][control.childMapping] = [];\n }\n childRecords[j][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[j][control.childMapping])) {\n if (removeChildRecords(childRecords[j][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[key] === record[key]) {\n index_1 = i;\n return;\n } });\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[index_1];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[key] !== child[key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[control.childMapping].indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[i][primaryKeys] === record[primaryKeys]) {\n data[i] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[index_2] ? row.cells[index_2]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\n }\n }\n }\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[i] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\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 { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[i]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[i] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[i] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[i] === 'primary_column_missing' || type[i] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[i] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[i] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[i] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[i] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[i] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[i]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\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})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent) {\n var _this = _super.call(this, parent.grid) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[i]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[i]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[i][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[i], rows, withHeader, i);\n }\n this[getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[i], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.treeGridParent.getVisibleColumns()[i].headerText;\n }\n this[getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this[copyContent] = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this[isSelect] = true;\n this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[selectedIndex][parentItem])) {\n var treeLevel = currentRecords[selectedIndex][parentItem][level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[selectedIndex][parentItem]) &&\n currentRecords[j][uniqueID] === currentRecords[selectedIndex][parentItem][uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[selectedIndex].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[j][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[selectedIndex][hasChildRecords]) {\n var childData = currentRecords[selectedIndex][childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[i][uniqueID]) && currentRecords[j][uniqueID] === childData[i][uniqueID]) {\n if ((!isNullOrUndefined(rows[j])) && !rows[j].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[j].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[j][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[copyContent]);\n this[copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = \"stackedHeader\";\n var columnModel = 'columnModel';\n var columns = this.parent[stackedHeader] ? this.parent[columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = columns[col].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[j];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[i]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[j])) {\n flatRecord[keys[j]] = record[keys[j]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[count].isSummaryRow) {\n if (childRecords[count].hasChildRecords) {\n this.traverSelection(childRecords[count], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[count], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[i].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && indeter === 0) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length) {\n this.filteredList = [];\n }\n }\n var data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList :\n this.parent.flatData;\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[i].checkboxState === 'check') {\n continue;\n }\n data[i].checkboxState = 'check';\n this.updateSelectedItems(data[i], data[i].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[i]);\n if (index > -1) {\n data[i].checkboxState = 'uncheck';\n this.updateSelectedItems(data[i], data[i].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[i]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.getCurrentViewRecords().indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var checkbox;\n if (recordIndex > -1) {\n var tr = this.parent.getRows()[recordIndex];\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[recordIndex];\n }\n checkbox = tr.querySelectorAll('.e-frame')[0] ? tr.querySelectorAll('.e-frame')[0]\n : movableTr.querySelectorAll('.e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && this.parent.enableVirtualization && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[i], childData[i].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[i]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[i], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[i].parentItem)) {\n this.updateParentSelection(updatedData[i].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.getCurrentViewRecords() : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[i].hasChildRecords) {\n _this.updateParentSelection(child[i]);\n }\n else if (!(child[i].hasChildRecords) && !isNullOrUndefined(child[i])) {\n _this.updateSelectedItems(child[i], child[i].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed) {\n args.row.style.display = 'none';\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (<ITreeData>args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n iconRequired = !(data.childRecords.length === 0);\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '7px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('aria-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n args.column.template = treeColumn.template;\n args.column[templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[templateFn](args.data, this.parent, 'template', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[portals])) {\n this.parent.grid[portals] = this.parent[portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[i]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = <DataManager>this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[i];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[i];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[index][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var records = args.result;\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n for (var rec = 0; rec < records.length; rec++) {\n if (isCountRequired(this.parent) && records[rec].hasChildRecords && this.parent.initialRender) {\n records[rec].expanded = false;\n }\n if (isNullOrUndefined(records[rec].index)) {\n records[rec].taskData = extend({}, records[rec]);\n records[rec].uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[rec].uniqueID, records[rec], this.parent);\n records[rec].level = 0;\n records[rec].index = Math.ceil(Math.random() * 1000);\n if ((records[rec][this.parent.hasChildMapping] ||\n this.parentItems.indexOf(records[rec][this.parent.idMapping]) !== -1)) {\n records[rec].hasChildRecords = true;\n }\n records[rec].checkboxState = 'uncheck';\n }\n }\n }\n else {\n if (!isNullOrUndefined(records)) {\n this.convertToFlatData(records);\n }\n }\n }\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[i].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[i].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ? this.parent.grid.getCurrentViewRecords()[rowDetails.rows[i].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[i].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var datas = _this.parent.grid.currentViewData.slice();\n var inx = datas.indexOf(rowDetails.record);\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n rowDetails.record.childRecords = result;\n for (var r = 0; r < result.length; r++) {\n result[r].taskData = extend({}, result[r]);\n result[r].level = rowDetails.record.level + 1;\n result[r].index = Math.ceil(Math.random() * 1000);\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[r].parentItem = parentData;\n result[r].parentUniqueID = rowDetails.record.uniqueID;\n result[r].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[r].checkboxState = 'uncheck';\n setValue('uniqueIDCollection.' + result[r].uniqueID, result[r], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[r][_this.parent.hasChildMapping] || _this.parentItems.indexOf(result[r][_this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[r])) {\n result[r].hasChildRecords = true;\n result[r].expanded = false;\n }\n datas.splice(inx + r + 1, 0, result[r]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[result_1], true);\n }\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n var keys = Object.keys(data);\n for (var i = 0, len = keys.length; i < len; i++) {\n var currentData = extend({}, data[i]);\n currentData.taskData = data[i];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping]) ||\n (currentData[this.parent.hasChildMapping] && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n if (isNullOrUndefined(currentData[this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[primaryKeyColumnName])) {\n actionAddArgs.data[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n dataValue.taskData[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[getColumnByField](this.parent.grid.\n sortSettings.columns[srt].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[srt].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[srt].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[isPdfExport] && (isNullOrUndefined(args[isCollapsedStatePersist])\n || args[isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[i], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[i]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n})(ContextMenuItems || (ContextMenuItems = {}));\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\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 { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\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 { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\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, addClass, createElement, EventHandler, isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\n/**\n * Represents the TreeGrid component.\n * ```html\n * <div id='treegrid'></div>\n * <script>\n * var treegridObj = new TreeGrid({ allowPaging: true });\n * treegridObj.appendTo('#treegrid');\n * </script>\n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== current[keys[i]] && excludeKeys.indexOf(keys[i]) === -1) {\n var isDate = old[keys[i]] instanceof Date && current[keys[i]] instanceof Date;\n if (!isDate || (old[keys[i]].getTime() !== current[keys[i]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n TreeGrid.prototype.sortByColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Searches TreeGrid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n row = column.closest('tr');\n if (row !== null && row !== undefined) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n row = column.closest('tr');\n if (row !== null && row !== undefined) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var rowIndex = summaryElement.rowIndex;\n this.selectRow(rowIndex);\n var cellIndex = e.target.cellIndex;\n var row_1 = summaryElement.children[cellIndex];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var rIndex = summaryElement.rowIndex;\n this.selectRow(rIndex);\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[cIndex];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount()) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.name === 'RowDD';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[i].member === 'virtualscroll') {\n modules[i].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[root] = this[root] ? this[root] : this;\n this.grid.appendTo(gridContainer);\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[templateInstance] = this[templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[isJsComponent] = true;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))) {\n args.cancel = true;\n return;\n }\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[i].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[updateRowSelection](_this.getRows()[i], _this.getCurrentViewRecords()[i].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n if (!isNullOrUndefined(args.data)) {\n _this.notify(events.rowDeselected, args);\n }\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.rowDeselecting = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[rowIndex]].classList.contains('e-summaryrow')) {\n args[rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[j]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[j]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = getObject('dataSource.requests', _this).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[i])) {\n if (totalRows[i].nextElementSibling) {\n _this.lastRowBorder(totalRows[i], true);\n }\n break;\n }\n }\n }\n var action = 'action';\n if (_this.enableVirtualization && _this.selectionSettings.persistSelection && (_this.dataResults[action] === 'expand' || _this.dataResults[action] === 'collapse')) {\n var refreshPersistSelection = 'refreshPersistSelection';\n _this.grid.selectionModule[refreshPersistSelection]();\n if (_this.grid.selectionSettings.type === 'Single') {\n var updateRowSelection = 'updateRowSelection';\n var index = _this.getCurrentViewRecords().indexOf(_this.grid.selectionModule['data']);\n _this.grid.selectionModule[updateRowSelection](_this.getRows()[index], index);\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n this.treeColumnRowTemplate();\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[dataSource].json = extendArray(this.dataSource[dataSource].json);\n this.grid.dataSource[ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[ready])) {\n this.grid.dataSource[ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[dataSource].offline = true;\n dm[isDataAvailable] = true;\n dm[dataSource].json = e.result;\n dm[adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 || _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (<DataManager>this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[i]) === -1) {\n this.columns.push(keys[i]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[guid] = this.editSettings[guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[i]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n default:\n items.push(this.contextMenuItems[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[i]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n index = index === 0 ? -1 : index;\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[i].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[i] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[i];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[prop] = column[i][prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[i][prop])) {\n gridColumn[prop] = this.getGridColumns(column[i][prop], false, index);\n treeGridColumn[prop] = column[i][prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[prop] = treeGridColumn[prop] = column[i][prop];\n }\n }\n }\n if (!treeGridColumn[stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n if (!isNullOrUndefined(this.columnModel[this.treeColumnIndex]) && this.enableRtl) {\n if (gridColumn.field === this.columnModel[this.treeColumnIndex].field) {\n if (isNullOrUndefined(this.treeColumnTextAlign)) {\n this.treeColumnTextAlign = this.columnModel[this.treeColumnIndex].textAlign;\n this.treeColumnField = this.columnModel[this.treeColumnIndex].field;\n }\n gridColumn.textAlign = 'Right';\n }\n }\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'columns':\n this.grid.columns = this.getGridColumns(this.columns);\n break;\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[prop].mode &&\n (newProp[prop].mode === 'Cell' || newProp[prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n this.ignoreInArrays(ignoreOnColumn, columns[i].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[index];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[rowIndex];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[prop] = gridColumns[i][prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[i].field && this.columnModel[i].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[i].template = temp;\n }\n }\n }\n var merge = 'deepMerge';\n this[merge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (!this.stackedHeader) {\n this.setProperties({ columns: this.columnModel }, true);\n }\n this[merge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n dRows.push(rows[i]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n return this.grid.currentViewData;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[i]);\n if (!currentViewRecords[i].expanded) {\n i += findChildrenRecords(currentViewRecords[i]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if (this.getBatchChanges()[this.changedRecords].length ||\n this.getBatchChanges()[this.deletedRecords].length || this.getBatchChanges()[this.addedRecords].length) {\n var dialogObj = this.grid.editModule[obj];\n this.grid.editModule[showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo = this.grid.getRowInfo(target);\n var record = rowInfo.rowData;\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo.row, record);\n }\n else {\n this.expandRow(rowInfo.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n _this.expandCollapse('expand', row, record);\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n var children = 'Children';\n if (!(isRemoteData(_this) && !isOffline(_this)) && (!isCountRequired(_this) || !isNullOrUndefined(record[children]))) {\n var collapseArgs = { data: record, row: row };\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, true);\n }\n _this.trigger(events.expanded, collapseArgs);\n }\n }\n });\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[i]);\n }\n };\n TreeGrid.prototype.setHeightForFrozenContent = function () {\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.grid.getFrozenColumns() > 0 || freeze) {\n this.grid.contentModule.refreshScrollOffset();\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n if (this.detailTemplate) {\n record = this.grid.getCurrentViewRecords()[row.getAttribute('aria-rowindex')];\n }\n else {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(_this)) {\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, false);\n }\n _this.trigger(events.collapsed, collapseArgs);\n if (_this.enableInfiniteScrolling) {\n var scrollHeight = _this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = _this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < _this.grid.getRowHeight() + +_this.height) {\n _this.grid.getContent().firstElementChild.scrollBy(0, _this.grid.getRowHeight());\n }\n }\n }\n }\n });\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[i][this.expandStateMapping] = state;\n editAction({ value: totalRecords[i], action: 'edit' }, this, this.isSelfReference, totalRecords[i].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[i].parentItem)) {\n var puniqueID_1 = record[i].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[i], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[i], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n if (action === 'collapse') {\n this.collapseRow(rows[0]);\n }\n else {\n this.expandRow(rows[0]);\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[i]);\n }\n else {\n this.expandRow(rows[i]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if (!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.getCurrentViewRecords().indexOf(record);\n row = gridRows[rowIndex];\n }\n else {\n rowIndex = +row.getAttribute('aria-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[i])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[i], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[i].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[i]) {\n childData[i].level = record.level + 1;\n childData[i].index = Math.ceil(Math.random() * 1000);\n childData[i].parentItem = extend({}, record);\n childData[i].taskData = extend({}, childData[i]);\n delete childData[i].parentItem.childRecords;\n delete childData[i].taskData.parentItem;\n childData[i].parentUniqueID = record.uniqueID;\n childData[i].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[i].uniqueID, childData[i], _this);\n if (!isNullOrUndefined(childData[i][_this.childMapping]) ||\n (childData[i][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[i].hasChildRecords = true;\n }\n currentData.splice(index + 1 + i, record[_this.childMapping] && record[_this.childMapping][i] ? 1 : 0, childData[i]);\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[index][_this.childMapping] = childData;\n currentData[index].childRecords = childData;\n currentData[index].expanded = true;\n setValue('uniqueIDCollection.' + currentData[index].uniqueID, currentData[index], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[j]);\n }\n }\n _this.isExpandRefresh = true;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.setHeightForFrozenContent();\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[i][primaryKeyField]);\n rows.push(this.getRows()[rowIndex]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[i])) {\n rows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[i].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[i] });\n if ((!isNullOrUndefined(childRecords[i].childRecords) && childRecords[i].childRecords.length > 0) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[i].expanded) || childRecords[i].expanded)) {\n this.expandCollapse(action, rows[i], childRecords[i], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[i], childRecords[i], true);\n }\n }\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[i];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[i].cells[this.treeColumnIndex];\n var row = rows[i];\n var rowData = this.grid.getRowsObject()[i].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = 'none';\n row = rows[i];\n var collapsingTd = rows[i].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[i].style.display = 'none';\n rightrows[i].style.display = 'none';\n if (!rows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[i];\n }\n else if (rightrows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[i];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[i].rowIndex] :\n this.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[i_1].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[i_1]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, true);\n }\n }\n }\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[i], cell: rows[i].cells[index],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[i], row: rows[i]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[j].columns) {\n cnt = this.getFrozenCount(cols[j].columns, cnt);\n }\n else {\n if (cols[j].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[f]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.modifiedRecords = 'modifiedRecords';\n /** @hidden */\n this.selectedRecords = 'selectedRecords';\n /** @hidden */\n this.selectedRows = 'selectedRows';\n /** @hidden */\n this.hasDropItem = true;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n var action = 'action';\n var dropPosition = 'dropPosition';\n var updateRowAndCellElements = 'updateRowAndCellElements';\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n this.parent[dropPosition] = this.dropPosition;\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n data[i] = this.parent.getCurrentViewRecords()[fromIndexes[i]];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n if (this.parent[action] === 'outdenting') {\n if (!isNullOrUndefined(data[0].parentItem)) {\n data[0].level = data[0].parentItem.level + 1;\n }\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[action] === 'indenting') {\n index = this.parent.treeColumnIndex;\n }\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][parentUniqueID]);\n var parentrow = this.parent.getRows()[toIndex];\n totalRecord.push(parentData);\n rows.push(parentrow);\n this.parent[updateRowAndCellElements](totalRecord, rows, index);\n }\n if (this.parent.enableImmutableMode && this.parent[action] === 'outdenting') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[action] === 'outdenting') {\n index = this.parent.treeColumnIndex;\n }\n var record = args.data[0];\n var row = this.parent.getRows()[fromIndexes[0]];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(record);\n rows.push(row);\n this.parent[updateRowAndCellElements](totalRecord, rows, index);\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.indentOutdentAction = function (record, request) {\n var tObj = this.parent;\n var action = 'action';\n var droppedIndex = 'dropIndex';\n var selectedItemIndex = -1;\n if (isNullOrUndefined(record) && this.parent.selectedRowIndex === -1) {\n return;\n }\n else {\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n this.selectedItem = isNullOrUndefined(record) ?\n tObj.getCurrentViewRecords()[selectedItemIndex] : record;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(this.selectedItem[primaryKeyField]);\n this.selectedRow = this.parent[this.selectedRows] = selectedItemIndex !== -1 ?\n this.parent.getSelectedRows()[0]\n : this.parent.grid.getRowByIndex(rowIndex);\n this.selectedRecord = this.parent[this.selectedRecords] = selectedItemIndex !== -1 ?\n tObj.getCurrentViewRecords()[selectedItemIndex]\n : this.selectedItem;\n if (request === 'indent') {\n var record_1 = tObj.getCurrentViewRecords()[this.selectedRow.rowIndex - 1];\n var dropIndex = void 0;\n if (this.selectedRow.rowIndex === 0 || this.selectedRow.rowIndex === -1 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level - record_1.level === 1) {\n return;\n }\n if (record_1.level > this.selectedRecord.level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record_1.parentItem.taskData) {\n dropIndex = i;\n }\n }\n }\n else {\n dropIndex = this.selectedRow.rowIndex - 1;\n }\n tObj[action] = 'indenting';\n tObj[droppedIndex] = dropIndex;\n this.eventTrigger('indenting', dropIndex);\n }\n else if (request === 'outdent') {\n if (this.selectedRow.rowIndex === -1 || this.selectedRow.rowIndex === 0 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level === 0) {\n return;\n }\n var dropIndex = void 0;\n var parentItem = this.selectedRecord.parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === parentItem.taskData) {\n dropIndex = i;\n }\n }\n tObj[action] = 'outdenting';\n tObj[droppedIndex] = dropIndex;\n this.eventTrigger('outdenting', dropIndex);\n }\n }\n };\n RowDD.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var actionArgs = {\n action: action,\n cancel: false,\n data: [this.parent[this.selectedRecords]],\n row: this.parent[this.selectedRows]\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.action === 'indenting') {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'child');\n }\n else if (actionArgs.action === 'outdenting') {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'below');\n }\n }\n });\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n for (var i = 0; i < currentData.length; i++) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = getValue('uniqueIDCollection.' + currentData[i].parentUniqueID, this.parent);\n currentData[i].parentItem.index = updatedParent.index;\n }\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[i];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[i];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[j]) === -1) {\n dragRecords_1.splice(j, 0, childData[j]);\n childData[j].taskData = extend({}, childData[j]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping)\n && draggedRecord_1[tObj.parentIdMapping] !== null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[i].uniqueID, dragRecords[i], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[i];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n var keys = Object.keys(tempDataSource);\n for (var i = 0; i < keys.length; i++) {\n if (tempDataSource[i][this.parent.childMapping] === droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][i] = childRecords[i].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[i].getAttribute('data-uid')\n || !parentsUntil(args.target, 'e-gridcontent')) {\n this.dropPosition = 'Invalid';\n this.addErrorElem();\n }\n }\n // To get the corresponding drop position related to mouse position\n var tObj = this.parent;\n var rowTop = 0;\n var roundOff = 0;\n var toolHeight = tObj.toolbar && tObj.toolbar.length ?\n document.getElementById(tObj.element.id + '_gridcontrol_toolbarItems').offsetHeight : 0;\n // tObj.lastRow = tObj.getRowByIndex(tObj.getCurrentViewRecords().length - 1);\n var positionOffSet = this.getOffset(tObj.element);\n // let contentHeight1: number = (tObj.element.offsetHeight - (tObj.getContent() as HTMLElement).offsetHeight) + positionOffSet.top;\n var contentHeight = tObj.getHeaderContent().offsetHeight + positionOffSet.top + toolHeight;\n var scrollTop = tObj.getContent().firstElementChild.scrollTop;\n if (!isNullOrUndefined(rowEle)) {\n rowPositionHeight = rowEle.offsetTop - scrollTop;\n }\n // let scrollTop = (tObj.grid.scrollModule as any).content.scrollTop;\n rowTop = rowPositionHeight + contentHeight + roundOff;\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = errorVal.innerHTML;\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = content;\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (this.hasDropItem && dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) + ele.offsetWidth + 16;\n var spanLeft = !this.parent.enableRtl ? dropItemLeft : 0;\n dropItemSpan.style.left = spanLeft + \"px\";\n this.hasDropItem = false;\n }\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n var errorValue = document.querySelector('.errorValue');\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (errorelem) {\n if (dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) - errorelem.offsetWidth - 16;\n setStyleAttribute(errorValue, {\n paddingLeft: '0px'\n });\n if (!this.parent.enableRtl) {\n setStyleAttribute(dropItemSpan, {\n left: dropItemLeft + \"px\"\n });\n }\n }\n errorelem.remove();\n }\n this.hasDropItem = true;\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[i].classList.add(className);\n }\n else {\n cells[i].classList.remove(className);\n }\n }\n };\n RowDD.prototype.getOffset = function (element) {\n var box = element.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n };\n RowDD.prototype.Rowdraging = function (args) {\n var tObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n cloneElement.style.cursor = '';\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n var rowIdx = rowEle ? rowEle.rowIndex : -1;\n var dragRecords = [];\n var droppedRecord = tObj.getCurrentViewRecords()[rowIdx];\n this.removeErrorElem();\n this.canDrop = true;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n if (rowIdx !== -1) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.canDrop = false;\n this.addErrorElem();\n }\n if (!tObj.rowDropSettings.targetID && this.canDrop) {\n tObj.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n if (tObj.rowDropSettings.targetID) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID) {\n var srcControl = dropElement.ej2_instances[0];\n srcControl.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n }\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID)) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (!dropElement) {\n cloneElement.style.cursor = 'default';\n }\n }\n };\n RowDD.prototype.rowDropped = function (args) {\n var tObj = this.parent;\n var parentItem = 'parentItem';\n if (!tObj.rowDropSettings.targetID) {\n if (parentsUntil(args.target, 'e-content')) {\n if (this.parent.element.querySelector('.e-errorelem')) {\n this.dropPosition = 'Invalid';\n }\n setValue('dropPosition', this.dropPosition, args);\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel) {\n if (!isCountRequired(this.parent)) {\n this.dropRows(args);\n }\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n tObj.grid.refresh();\n if (!isNullOrUndefined(tObj.getHeaderContent().querySelector('.e-firstrow-border'))) {\n tObj.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n }\n }\n }\n else {\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID) || parentsUntil(args.target, 'e-treegrid') &&\n parentsUntil(args.target, 'e-treegrid').id === tObj.rowDropSettings.targetID || args.target && document.getElementById(tObj.rowDropSettings.targetID)) {\n setValue('dropPosition', this.dropPosition, args);\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel && tObj.rowDropSettings.targetID) {\n this.dragDropGrid(args);\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n }\n }\n }\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-firstrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n else if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-lastrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n if (this.parent.enableImmutableMode && !this.parent.allowPaging && !isNullOrUndefined(args.data[0][parentItem])) {\n var index = this.parent.treeColumnIndex;\n index = index + 1;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(args.data[0][primaryKeyField]);\n var row = this.parent.getRows()[rowIndex];\n var data = args.data[0];\n if (this.dropPosition === 'middleSegment') {\n var record = [];\n var rows = [];\n record.push(data);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n data = getParentData(this.parent, args.data[0][parentUniqueID]);\n rowIndex = this.parent.grid.getRowIndexByPrimaryKey(data[primaryKeyField]);\n var parentrow = this.parent.getRows()[rowIndex];\n record.push(data);\n rows.push(parentrow);\n for (var i = 0; i < record.length; i++) {\n this.parent.renderModule.cellRender({\n data: record[i], cell: rows[i].cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n var targetEle = parentrow.getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n else {\n this.parent.renderModule.cellRender({\n data: data, cell: row.cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n };\n RowDD.prototype.dragDropGrid = function (args) {\n var tObj = this.parent;\n var targetRow = closest(args.target, 'tr');\n var targetIndex = isNaN(this.getTargetIdx(targetRow)) ? 0 : this.getTargetIdx(targetRow);\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n var srcControl;\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID && !isRemoteData(this.parent)\n && !isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n var records = tObj.getSelectedRecords();\n var indexes = [];\n for (var i = 0; i < records.length; i++) {\n indexes[i] = records[i].index;\n }\n var data = srcControl.dataSource;\n if (this.parent.idMapping !== null && (isNullOrUndefined(this.dropPosition) || this.dropPosition === 'bottomSegment' || this.dropPosition === 'Invalid') && !(data.length)) {\n var actualData = [];\n for (var i = 0; i < records.length; i++) {\n if (records[i].hasChildRecords) {\n actualData.push(records[i]);\n var child = findChildrenRecords(records[i]);\n for (var i_1 = 0; i_1 < child.length; i_1++) {\n actualData.push(child[i_1]); // push child records to drop the parent record along with its child records\n }\n }\n }\n if (actualData.length) {\n records = actualData;\n }\n }\n tObj.notify(events.rowsRemove, { indexes: indexes, records: records });\n srcControl.notify(events.rowsAdd, { toIndex: targetIndex, records: records });\n var srcControlFlatData = srcControl.rowDragAndDropModule.treeGridData;\n if (!isNullOrUndefined(srcControlFlatData)) {\n for (var i = 0; i < srcControlFlatData.length; i++) {\n srcControlFlatData[i].index = i;\n if (!isNullOrUndefined(srcControlFlatData[i].parentItem)) {\n var actualIndex = getValue('uniqueIDCollection.' + srcControlFlatData[i].parentUniqueID + '.index', srcControl);\n srcControlFlatData[i].parentItem.index = actualIndex;\n }\n }\n }\n tObj.grid.refresh();\n srcControl.grid.refresh();\n if (srcControl.grid.dataSource.length > 1) {\n srcControl.grid.refresh();\n if (!isNullOrUndefined(srcControl.getHeaderContent().querySelector('.e-firstrow-border'))) {\n srcControl.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n if (!isNullOrUndefined(srcControl.getContent().querySelector('.e-lastrow-border'))) {\n srcControl.getContent().querySelector('.e-lastrow-border').remove();\n }\n }\n }\n if (isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n tObj.grid.refresh();\n srcControl.grid.refresh();\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute('aria-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record, data) {\n var parentItem = record.parentItem;\n var selectedItemIndex = -1;\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n if (this.dropPosition === 'bottomSegment') {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = selectedItemIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(data[0][primaryKeyField])) - 1\n : this.parent.getSelectedRowIndexes()[0] - 1;\n var selectedRecord = this.parent.getCurrentViewRecords()[rowIndex];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getCurrentViewRecords()[selectedItemIndex].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = tObj.selectedRowIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(args.data[0][primaryKeyField])) - 1\n : tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record, args.data);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n this.parent[this.modifiedRecords].push(args.data[0], droppedRecord);\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_1 = function (i) {\n draggedRecord_2 = dragRecords[i];\n this_1.draggedRecord = draggedRecord_2;\n if (this_1.dropPosition !== 'Invalid') {\n if (!tObj.rowDropSettings.targetID || isByMethod) {\n this_1.deleteDragRow();\n }\n if (this_1.draggedRecord === this_1.droppedRecord) {\n var correctIndex = this_1.getTargetIdx(args.target.offsetParent.parentElement);\n if (isNaN(correctIndex)) {\n correctIndex = this_1.getTargetIdx(args.target.parentElement);\n }\n args.dropIndex = correctIndex;\n droppedRecord = this_1.droppedRecord = this_1.parent.getCurrentViewRecords()[args.dropIndex];\n }\n if (droppedRecord.parentItem || this_1.dropPosition === 'middleSegment') {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.draggedRecord);\n if (newParentIndex !== -1) {\n parentRecords.splice(newParentIndex, 1);\n }\n }\n var recordIndex1 = this_1.treeGridData.indexOf(droppedRecord);\n this_1.dropAtTop(recordIndex1);\n if (this_1.dropPosition === 'bottomSegment') {\n if (!droppedRecord.hasChildRecords) {\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + 1, 0, this_1.draggedRecord);\n }\n else {\n count = this_1.getChildCount(droppedRecord, 0);\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord);\n }\n if (isNullOrUndefined(droppedRecord.parentItem)) {\n delete draggedRecord_2.parentItem;\n delete draggedRecord_2.parentUniqueID;\n draggedRecord_2.level = 0;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = null;\n }\n }\n if (droppedRecord.parentItem) {\n var rec = this_1.getChildrecordsByParentID(droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(droppedRecord) + 1;\n childRecords.splice(droppedRecordIndex, 0, draggedRecord_2);\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.parentUniqueID = droppedRecord.parentUniqueID;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_1(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[recordIndex1].parentItem;\n this.draggedRecord.parentUniqueID = this.treeGridData[recordIndex1].parentUniqueID;\n this.draggedRecord.level = this.treeGridData[recordIndex1].level;\n this.treeGridData.splice(recordIndex1, 0, this.draggedRecord);\n if (this.draggedRecord.hasChildRecords) {\n var level = 1;\n this.updateChildRecord(this.draggedRecord, recordIndex1);\n this.updateChildRecordLevel(this.draggedRecord, level);\n }\n if (this.droppedRecord.parentItem) {\n var rec = this.getChildrecordsByParentID(this.droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(this.droppedRecord);\n childRecords.splice(droppedRecordIndex, 0, this.draggedRecord);\n }\n }\n };\n RowDD.prototype.recordLevel = function () {\n var tObj = this.parent;\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var childItem = tObj.childMapping;\n if (!droppedRecord.hasChildRecords) {\n droppedRecord.hasChildRecords = true;\n droppedRecord.hasFilteredChildRecords = true;\n if (isNullOrUndefined(droppedRecord.childRecords) || droppedRecord.childRecords.length === 0) {\n droppedRecord.childRecords = [];\n if (!tObj.parentIdMapping && isNullOrUndefined(droppedRecord.taskData[childItem])) {\n droppedRecord.taskData[childItem] = [];\n }\n }\n }\n if (this.dropPosition === 'middleSegment') {\n var parentItem = extend({}, droppedRecord);\n delete parentItem.childRecords;\n draggedRecord.parentItem = parentItem;\n draggedRecord.parentUniqueID = droppedRecord.uniqueID;\n droppedRecord.childRecords.splice(droppedRecord.childRecords.length, 0, draggedRecord);\n var isSelfReference = 'isSelfReference';\n if (tObj[isSelfReference]) {\n droppedRecord[tObj.childMapping] = [];\n droppedRecord[tObj.childMapping].splice(droppedRecord[tObj.childMapping].length, 0, draggedRecord);\n }\n if (!isNullOrUndefined(draggedRecord) && !tObj.parentIdMapping && !isNullOrUndefined(droppedRecord.taskData[childItem])) {\n droppedRecord.taskData[tObj.childMapping].splice(droppedRecord.childRecords.length, 0, draggedRecord.taskData);\n }\n if (!draggedRecord.hasChildRecords) {\n draggedRecord.level = droppedRecord.level + 1;\n }\n else {\n var level = 1;\n draggedRecord.level = droppedRecord.level + 1;\n this.updateChildRecordLevel(draggedRecord, level);\n }\n droppedRecord.expanded = true;\n }\n };\n RowDD.prototype.deleteDragRow = function () {\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n this.treeGridData = this.parent.grid.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n var deletedRow = getParentData(this.parent, this.draggedRecord.uniqueID);\n if (!isNullOrUndefined(deletedRow.childRecords) && deletedRow.childRecords.length) {\n deletedRow.hasChildRecords = true;\n }\n this.removeRecords(deletedRow);\n };\n RowDD.prototype.updateChildRecord = function (record, count) {\n var currentRecord;\n var tObj = this.parent;\n var length = 0;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, tObj);\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, this.parent);\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping || tObj.enableImmutableMode) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[j][primaryKeyField] === deletedRow[primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n if (this.parent[this.modifiedRecords].indexOf(flatParentData) === -1 && !isNullOrUndefined(flatParentData)) {\n this.parent[this.modifiedRecords].push(flatParentData);\n }\n if (!isNullOrUndefined(flatParentData)) {\n this.updateModifiedRecords(flatParentData);\n }\n }\n };\n RowDD.prototype.updateModifiedRecords = function (record) {\n var parentData = getParentData(this.parent, record.parentUniqueID);\n if (!isNullOrUndefined(parentData)) {\n this.parent[this.modifiedRecords].push(parentData);\n this.updateModifiedRecords(parentData);\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[i_2][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[i_3][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the row drop settings of the TreeGrid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\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})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.nextInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.nextInfo.page } }, true);\n }\n else if (!isNullOrUndefined(notifyArgs.virtualInfo) && !notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n for (var r = 0; r < rows.length; r++) {\n rows[r].index = (this.visualData).indexOf(rows[r].data);\n }\n return rows;\n }\n };\n TreeVirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var clear = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'reorder',\n 'save', 'delete'].some(function (value) { return action === value; });\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n var model = 'model';\n var currentPage = this[model].currentPage;\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n else if (action === 'virtualscroll' && this.cache[currentPage] &&\n this.cache[currentPage].length > (this.parent.contentModule).getBlockSize()) {\n delete this.cache[currentPage];\n }\n }\n else {\n if (clear || action === 'virtualscroll') {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[f];\n this.addParentRecord(rec);\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'None') &&\n (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== ''))) {\n this.isHierarchyFilter = true;\n }\n var ischild = getObject('childRecords', rec);\n if (!isNullOrUndefined(ischild) && ischild.length) {\n setValue('hasFilteredChildRecords', this.checkChildExsist(rec), rec);\n }\n var parent_1 = getObject('parentItem', rec);\n if (!isNullOrUndefined(parent_1)) {\n var parRecord = getParentData(this.parent, rec.parentItem.uniqueID, true);\n //let parRecord: Object = this.flatFilteredData.filter((e: ITreeData) => {\n // return e.uniqueID === rec.parentItem.uniqueID; })[0];\n setValue('hasFilteredChildRecords', true, parRecord);\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n }\n }\n if (this.flatFilteredData.length > 0 && this.isHierarchyFilter) {\n this.updateFilterLevel();\n }\n this.parent.notify('updateAction', { result: this.filteredResult });\n };\n Filter.prototype.updateParentFilteredRecord = function (record) {\n var parRecord = getParentData(this.parent, record.parentItem.uniqueID, true);\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (parRecord && Object.prototype.hasOwnProperty.call(uniqueIDValue, parRecord.uniqueID)) {\n setValue('hasFilteredChildRecords', true, parRecord);\n }\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n };\n Filter.prototype.addParentRecord = function (record) {\n var parent = getParentData(this.parent, record.parentUniqueID);\n //let parent: Object = this.parent.flatData.filter((e: ITreeData) => {return e.uniqueID === record.parentUniqueID; })[0];\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode === 'None' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (isNullOrUndefined(parent)) {\n if (this.flatFilteredData.indexOf(record) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n record.hasFilteredChildRecords = true;\n }\n return;\n }\n }\n else {\n this.addParentRecord(parent);\n if (this.flatFilteredData.indexOf(parent) !== -1 || this.filteredResult.indexOf(parent) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n else {\n if (this.filteredResult.indexOf(record) === -1 && this.flatFilteredData.indexOf(record) !== -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n }\n }\n else {\n if (!isNullOrUndefined(parent)) {\n var hierarchyMode_1 = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode_1 === 'Child' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(parent) !== -1) {\n this.addParentRecord(parent);\n }\n }\n else {\n if (parent['expanded'] === false && this.parent.getVisibleRecords().indexOf(record) === -1 && isNullOrUndefined(this.parent['dataResults']['action'])) {\n this.parent.expandRow(this.parent.getRows()[parent['index']], parent);\n }\n this.addParentRecord(parent);\n }\n }\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n };\n Filter.prototype.checkChildExsist = function (records) {\n var childRec = getObject('childRecords', records);\n var isExist = false;\n for (var count = 0; count < childRec.length; count++) {\n var ischild = childRec[count].childRecords;\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'Both') && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== ''))) {\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (!Object.prototype.hasOwnProperty.call(uniqueIDValue, childRec[count].uniqueID)) {\n this.filteredResult.push(childRec[count]);\n setValue('uniqueIDFilterCollection.' + childRec[count].uniqueID, childRec[count], this.parent);\n isExist = true;\n }\n }\n if ((hierarchyMode === 'None')\n && (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(childRec[count]) !== -1) {\n isExist = true;\n break;\n }\n }\n if (!isNullOrUndefined(ischild) && ischild.length) {\n isExist = this.checkChildExsist(childRec[count]);\n }\n if ((hierarchyMode === 'Child' || hierarchyMode === 'Both') && childRec.length) {\n isExist = true;\n }\n }\n return isExist;\n };\n Filter.prototype.updateFilterLevel = function () {\n var record = this.filteredResult;\n var len = this.filteredResult.length;\n for (var c = 0; c < len; c++) {\n var parent_2 = getParentData(this.parent, record[c].parentUniqueID);\n var isPrst = record.indexOf(parent_2) !== -1;\n if (isPrst) {\n var parent_3 = getParentData(this.parent, record[c].parentUniqueID, true);\n record[c].filterLevel = parent_3.filterLevel + 1;\n }\n else {\n record[c].filterLevel = 0;\n this.filteredParentRecs.push(record[c]);\n }\n }\n };\n Filter.prototype.clearFilterLevel = function (data) {\n var count = 0;\n var flatData = data.flatData;\n var len = flatData.length;\n var currentRecord;\n for (count; count < len; count++) {\n currentRecord = flatData[count];\n var fLevel = currentRecord.filterLevel;\n if (fLevel || fLevel === 0 || !isNullOrUndefined(currentRecord.hasFilteredChildRecords)) {\n currentRecord.hasFilteredChildRecords = null;\n currentRecord.filterLevel = null;\n }\n }\n this.filteredResult = [];\n this.parent.notify('updateResults', { result: flatData, count: flatData.length });\n };\n return Filter;\n}());\nexport { Filter };\n","import { getObject, Grid, ExcelExport as GridExcel } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, getParentData, getExpandStatus } from '../utils';\nimport { isNullOrUndefined, setValue, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid Excel Export module\n *\n * @hidden\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for Excel Export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ExcelExport(parent) {\n this.isCollapsedStatePersist = false;\n Grid.Inject(GridExcel);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ExcelExport module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.addEventListener = function () {\n this.parent.on('updateResults', this.updateExcelResultModel, this);\n this.parent.on('excelCellInfo', this.excelQueryCellInfo, this);\n this.parent.grid.on('export-RowDataBound', this.exportRowDataBound, this);\n this.parent.grid.on('finalPageSetup', this.finalPageSetup, this);\n };\n /**\n * To destroy the Excel Export\n *\n * @returns {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateResults', this.updateExcelResultModel);\n this.parent.off('excelCellInfo', this.excelQueryCellInfo);\n this.parent.grid.off('export-RowDataBound', this.exportRowDataBound);\n this.parent.grid.off('finalPageSetup', this.finalPageSetup);\n };\n ExcelExport.prototype.updateExcelResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n ExcelExport.prototype.Map = function (excelExportProperties, \n /* eslint-disable-next-line */\n isMultipleExport, workbook, isBlob, isCsv) {\n var _this = this;\n var dataSource = this.parent.dataSource;\n var property = Object();\n setValue('isCsv', isCsv, property);\n setValue('cancel', false, property);\n if (!isNullOrUndefined(excelExportProperties)) {\n this.isCollapsedStatePersist = excelExportProperties.isCollapsedStatePersist;\n }\n return new Promise(function (resolve) {\n var dm = _this.isLocal() && !(dataSource instanceof DataManager) ? new DataManager(dataSource)\n : _this.parent.dataSource;\n var query = new Query();\n if (!_this.isLocal()) {\n query = _this.generateQuery(query);\n setValue('query', query, property);\n }\n _this.parent.trigger(event.beforeExcelExport, extend(property, excelExportProperties));\n if (getObject('cancel', property)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customData = null;\n if (!isNullOrUndefined(excelExportProperties) && !isNullOrUndefined(excelExportProperties.dataSource)) {\n customData = excelExportProperties.dataSource;\n }\n excelExportProperties = _this.manipulateExportProperties(excelExportProperties, dataSource, e);\n return _this.parent.grid.excelExportModule.Map(_this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob).then(function (book) {\n if (customData != null) {\n excelExportProperties.dataSource = customData;\n }\n else {\n delete excelExportProperties.dataSource;\n }\n resolve(book);\n });\n });\n });\n };\n ExcelExport.prototype.generateQuery = function (query, property) {\n if (!isNullOrUndefined(property) && property.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n property.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n ExcelExport.prototype.manipulateExportProperties = function (property, dtSrc, queryResult) {\n //count not required for this query\n var args = Object();\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n if (!isNullOrUndefined(property) && !isNullOrUndefined(property.exportType)) {\n setValue('exportType', property.exportType, args);\n }\n if (!this.isLocal()) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getObject('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!this.isLocal()) {\n this.parent.flatData = [];\n }\n if (property && property.dataSource && this.isLocal()) {\n var flatsData = this.parent.flatData;\n var dataSrc = property.dataSource instanceof DataManager ? property.dataSource.dataSource.json : property.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatsData;\n }\n property = isNullOrUndefined(property) ? Object() : property;\n property.dataSource = new DataManager({ json: dtSrc });\n return property;\n };\n /**\n * TreeGrid Excel Export cell modifier\n *\n * @param {ExcelQueryCellInfoEventArgs} args - current cell details\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.excelQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = args.data;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.indent = pad;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('excelQueryCellInfo', args);\n };\n ExcelExport.prototype.exportRowDataBound = function (excelRow) {\n if (excelRow.type === 'excel') {\n var excelrowobj = excelRow.rowObj.data;\n var filtercolumnlength = this.parent.grid.filterSettings.columns.length;\n var rowlength = excelRow.excelRows.length;\n var rowlevel = excelrowobj.level;\n if (excelrowobj.parentItem && getParentData(this.parent, excelrowobj.parentItem.uniqueID, Boolean(filtercolumnlength))) {\n var expandedStatus = false;\n var sublevelState = false;\n var state = getExpandStatus(this.parent, excelrowobj, this.parent.parentData);\n if (this.isCollapsedStatePersist && (!state || !this.parent.isLocalData)) {\n expandedStatus = true;\n sublevelState = excelrowobj.expanded ? false : true;\n }\n excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel, isCollapsed: sublevelState,\n isHidden: expandedStatus };\n }\n else if (excelrowobj.hasChildRecords && isNullOrUndefined(excelrowobj.parentItem)) {\n excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel };\n }\n }\n };\n /* eslint-disable-next-line */\n ExcelExport.prototype.finalPageSetup = function (workbook) {\n for (var i = 0; i < workbook.worksheets.length; i++) {\n if (workbook.worksheets[i].rows) {\n workbook.worksheets[i].pageSetup = { isSummaryRowBelow: false };\n }\n }\n };\n ExcelExport.prototype.isLocal = function () {\n return !isRemoteData(this.parent) && isOffline(this.parent);\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { getObject, PdfExport as GridPdf, Grid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline } from '../utils';\nimport { isNullOrUndefined, setValue, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid PDF Export module\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for PDF export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function PdfExport(parent) {\n Grid.Inject(GridPdf);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} PdfExport module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.addEventListener = function () {\n this.parent.on('pdfCellInfo', this.pdfQueryCellInfo, this);\n this.parent.on('updateResults', this.updatePdfResultModel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('pdfCellInfo', this.pdfQueryCellInfo);\n this.parent.off('updateResults', this.updatePdfResultModel);\n };\n /**\n * To destroy the PDF Export\n *\n * @returns {void}\n * @hidden\n */\n PdfExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n PdfExport.prototype.updatePdfResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n PdfExport.prototype.Map = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n var dtSrc = this.parent.dataSource;\n var prop = Object();\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('cancel', false, prop);\n return new Promise(function (resolve) {\n var dm = isLocal && !(dtSrc instanceof DataManager) ? new DataManager(dtSrc)\n : _this.parent.dataSource;\n var query = new Query();\n if (!isLocal) {\n query = _this.generateQuery(query);\n setValue('query', query, prop);\n }\n _this.parent.trigger(event.beforePdfExport, extend(prop, pdfExportProperties));\n if (getObject('cancel', prop)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customsData = null;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n customsData = pdfExportProperties.dataSource;\n }\n pdfExportProperties = _this.manipulatePdfProperties(pdfExportProperties, dtSrc, e);\n return _this.parent.grid.pdfExportModule.Map(_this.parent.grid, pdfExportProperties, isMultipleExport, pdfDoc, isBlob).then(function (document) {\n if (customsData != null) {\n pdfExportProperties.dataSource = customsData;\n }\n else {\n delete pdfExportProperties.dataSource;\n }\n resolve(document);\n });\n });\n });\n };\n PdfExport.prototype.generateQuery = function (query, prop) {\n if (!isNullOrUndefined(prop) && prop.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n prop.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n PdfExport.prototype.manipulatePdfProperties = function (prop, dtSrc, queryResult) {\n var args = {};\n //count not required for this query\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n setValue('isPdfExport', true, args);\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.isCollapsedStatePersist)) {\n setValue('isCollapsedStatePersist', prop.isCollapsedStatePersist, args);\n }\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.exportType)) {\n setValue('exportType', prop.exportType, args);\n }\n if (!isLocal) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getValue('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!isLocal) {\n this.parent.flatData = [];\n }\n if (prop && prop.dataSource && isLocal) {\n var flatDatas = this.parent.flatData;\n var dataSrc = prop.dataSource instanceof DataManager ? prop.dataSource.dataSource.json : prop.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatDatas;\n }\n prop = isNullOrUndefined(prop) ? {} : prop;\n prop.dataSource = new DataManager({ json: dtSrc });\n return prop;\n };\n /**\n * TreeGrid PDF Export cell modifier\n *\n * @param {PdfQueryCellInfoEventArgs} args - Current cell details\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.pdfQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = getObject('data', args);\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.paragraphIndent = pad * 3;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('pdfQueryCellInfo', args);\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { Grid } from '@syncfusion/ej2-grids';\nimport { Page as GridPage } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { getValue, isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * The `Page` module is used to render pager and handle paging action.\n *\n * @hidden\n */\nvar Page = /** @class */ (function () {\n function Page(parent) {\n Grid.Inject(GridPage);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.addEventListener = function () {\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandPagedchilds, this);\n this.parent.on(events.pagingActions, this.pageAction, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandPagedchilds);\n this.parent.off(events.pagingActions, this.pageAction);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Pager module name\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.parent.grid.pagerModule.refresh();\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.parent.grid.pagerModule.goToPage(pageNo);\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n this.parent.grid.pagerModule.updateExternalMessage(message);\n };\n /**\n * @param {{action: string, row: HTMLTableRowElement, record: ITreeData, args: RowCollapsedEventArgs}} rowDetails - Expand Collapse details arguments\n * @param {string} rowDetails.action - Expand Collapse action type\n * @param {HTMLTableRowElement} rowDetails.row - Row element\n * @param {ITreeData} rowDetails.record - Row object data\n * @param {RowCollapsedEventArgs} rowDetails.args - Expand Collapse event arguments\n * @hidden\n * @returns {void}\n */\n Page.prototype.collapseExpandPagedchilds = function (rowDetails) {\n rowDetails.record.expanded = rowDetails.action === 'collapse' ? false : true;\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[primaryKeyField_1] === rowDetails.record[primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[action] === 'collapse') {\n targetEle = ret[row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[action] === 'expand') {\n targetEle = ret[row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[t]);\n var res = [];\n if (temp[t].hasChildRecords) {\n res = pagedResults.filter(function (e) {\n return temp[t].uniqueID === e.parentUniqueID;\n });\n newResults = this_1.pageRoot(pagedResults, res, newResults);\n }\n };\n var this_1 = this;\n for (var t = 0; t < temp.length; t++) {\n _loop_1(t);\n }\n return newResults;\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && ((this.parent.searchSettings.key !== this.parent.grid.searchSettings.key) ||\n (this.parent.filterSettings.columns.length !== this.parent.grid.filterSettings.columns.length))) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.rowDeselected, this.refreshToolbar, this);\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowSelected, this.refreshToolbar);\n this.parent.off(events.rowDeselected, this.refreshToolbar);\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var tObj = this.parent;\n var indentElement;\n var outdentElement;\n var indentID = tObj.element.id + '_gridcontrol_indent';\n var outdentID = tObj.element.id + '_gridcontrol_outdent';\n var toolbarElement = this.parent.grid.toolbarModule.getToolbar();\n var indentEle = toolbarElement.querySelector('#' + indentID);\n var outdentEle = toolbarElement.querySelector('#' + outdentID);\n var row = args.row;\n var selectedrow = tObj.getSelectedRows()[0];\n if (!isNullOrUndefined(row[0])) {\n row = row[0];\n }\n row = (!isNullOrUndefined(selectedrow) && selectedrow.rowIndex !== row.rowIndex) ? selectedrow : row;\n if (indentEle !== null && outdentEle !== null) {\n indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n if (row.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[row.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[row.rowIndex - 1].level)) {\n indentElement.classList.add('e-hidden');\n }\n else {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === tObj.getCurrentViewRecords()[row.rowIndex - 1].level) {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === 0) {\n outdentElement.classList.add('e-hidden');\n }\n if (selectedItem.level !== 0) {\n outdentElement.classList.remove('e-hidden');\n }\n }\n }\n if (args['name'] === 'rowDeselected' && isNullOrUndefined(selectedrow) && !tObj.grid.isCheckBoxSelection) {\n if (this.parent.toolbar['includes']('Indent')) {\n indentElement.classList.add('e-hidden');\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n outdentElement.classList.add('e-hidden');\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var indentOutdentAction = 'indentOutdentAction';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[indentOutdentAction](null, 'indent');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[indentOutdentAction](null, 'outdent');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[p]);\n if (!summaryRow) {\n parentData.push(filteredData[p]);\n }\n }\n var parentRecords = findParentRecords(parentData);\n var flatRecords = parentData.slice();\n var summaryLength = Object.keys(this.parent.aggregates).length;\n var dataLength = Object.keys(parentRecords).length;\n var childRecordsLength;\n var columns = this.parent.getColumns();\n if (this.parent.aggregates.filter(function (x) { return x.showChildSummary; }).length) {\n for (var i = 0, len = dataLength; i < len; i++) {\n parentRecord = parentRecords[i];\n childRecordsLength = this.getChildRecordsLength(parentRecord, flatRecords);\n if (childRecordsLength) {\n var _loop_1 = function (summaryRowIndex, len_1) {\n var item = void 0;\n item = {};\n for (var i_1 = 0; i_1 < columns.length; i_1++) {\n var field = (isNullOrUndefined(getObject('field', columns[i_1]))) ?\n columns[i_1] : getObject('field', (columns[i_1]));\n item[field] = null;\n }\n item = this_1.createSummaryItem(item, this_1.parent.aggregates[summaryRowIndex - 1]);\n if (this_1.parent.aggregates[summaryRowIndex - 1].showChildSummary) {\n var idx_1;\n flatRecords.map(function (e, i) {\n if (e.uniqueID === parentRecord.uniqueID) {\n idx_1 = i;\n return;\n }\n });\n var currentIndex = idx_1 + childRecordsLength + summaryRowIndex;\n var summaryParent = extend({}, parentRecord);\n delete summaryParent.childRecords;\n delete summaryParent[this_1.parent.childMapping];\n setValue('parentItem', summaryParent, item);\n var level = getObject('level', summaryParent);\n setValue('level', level + 1, item);\n setValue('isSummaryRow', true, item);\n setValue('parentUniqueID', summaryParent.uniqueID, item);\n if (isSort) {\n var childRecords = getObject('childRecords', parentRecord);\n if (childRecords.length) {\n childRecords.push(item);\n }\n }\n flatRecords.splice(currentIndex, 0, item);\n }\n else {\n return \"continue\";\n }\n };\n var this_1 = this;\n for (var summaryRowIndex = 1, len_1 = summaryLength; summaryRowIndex <= len_1; summaryRowIndex++) {\n _loop_1(summaryRowIndex, len_1);\n }\n this.flatChildRecords = [];\n }\n }\n }\n else {\n var items = {};\n for (var columnIndex = 0, length_1 = columns.length; columnIndex < length_1; columnIndex++) {\n var fields = isNullOrUndefined(getObject('field', columns[columnIndex])) ?\n columns[columnIndex] : getObject('field', columns[columnIndex]);\n items[fields] = null;\n }\n for (var summaryRowIndex = 1, length_2 = summaryLength; summaryRowIndex <= length_2; summaryRowIndex++) {\n this.createSummaryItem(items, this.parent.aggregates[summaryRowIndex - 1]);\n }\n }\n return flatRecords;\n };\n Aggregate.prototype.getChildRecordsLength = function (parentData, flatData) {\n var recordLength = Object.keys(flatData).length;\n var record;\n for (var i = 0, len = recordLength; i < len; i++) {\n record = flatData[i];\n var parent_1 = isNullOrUndefined(record.parentItem) ? null :\n flatData.filter(function (e) { return e.uniqueID === record.parentItem.uniqueID; })[0];\n if (parentData === parent_1) {\n this.flatChildRecords.push(record);\n var hasChild = getObject('hasChildRecords', record);\n if (hasChild) {\n this.getChildRecordsLength(record, flatData);\n }\n else {\n continue;\n }\n }\n }\n return this.flatChildRecords.length;\n };\n Aggregate.prototype.createSummaryItem = function (itemData, summary) {\n var summaryColumnLength = Object.keys(summary.columns).length;\n for (var i = 0, len = summaryColumnLength; i < len; i++) {\n var displayColumn = isNullOrUndefined(summary.columns[i].columnName) ? summary.columns[i].field :\n summary.columns[i].columnName;\n var keys = Object.keys(itemData);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === displayColumn) {\n if (this.flatChildRecords.length) {\n itemData[key] = this.getSummaryValues(summary.columns[i], this.flatChildRecords);\n }\n else if (this.parent.isLocalData) {\n var data = this.parent.dataSource instanceof DataManager ? this.parent.dataSource.dataSource.json\n : this.parent.flatData;\n itemData[key] = this.getSummaryValues(summary.columns[i], data);\n }\n }\n else {\n continue;\n }\n }\n }\n return itemData;\n };\n Aggregate.prototype.getSummaryValues = function (summaryColumn, summaryData) {\n var qry = new Query();\n var single = {};\n var helper = {};\n var type = !isNullOrUndefined(summaryColumn.field) ?\n this.parent.getColumnByField(summaryColumn.field).type : undefined;\n summaryColumn.setPropertiesSilent({ format: this.getFormatFromType(summaryColumn.format, type) });\n summaryColumn.setFormatter(this.parent.grid.locale);\n var formatFn = summaryColumn.getFormatter() || (function () { return function (a) { return a; }; })();\n summaryColumn.setTemplate(helper);\n var tempObj = summaryColumn.getTemplate(2);\n qry.queries = this.summaryQuery;\n qry.requiresCount();\n var sumData = new DataManager(summaryData).executeLocal(qry);\n var types = summaryColumn.type;\n var summaryKey;\n types = [summaryColumn.type];\n for (var i = 0; i < types.length; i++) {\n summaryKey = types[i];\n var key = summaryColumn.field + ' - ' + types[i].toLowerCase();\n var val = types[i] !== 'Custom' ? getObject('aggregates', sumData) :\n calculateAggregate(types[i], sumData, summaryColumn, this.parent);\n var disp = summaryColumn.columnName;\n var value_1 = types[i] !== 'Custom' ? val[key] : val;\n single[disp] = single[disp] || {};\n single[disp][key] = value_1;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(value_1) : ' ';\n }\n helper.format = summaryColumn.getFormatter();\n var cellElement = createElement('td', {\n className: 'e-summary'\n });\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property, '', null, null, cellElement);\n this.parent[renderReactTemplates]();\n }\n else {\n appendChildren(cellElement, tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property));\n }\n var value = single[summaryColumn.columnName][summaryKey];\n var summaryValue;\n if (cellElement.innerHTML.indexOf(value) === -1) {\n summaryValue = cellElement.innerHTML + value;\n return summaryValue;\n }\n else {\n return cellElement.innerHTML;\n }\n };\n Aggregate.prototype.getFormatFromType = function (summaryformat, type) {\n if (isNullOrUndefined(type) || typeof summaryformat !== 'string') {\n return summaryformat;\n }\n var obj;\n switch (type) {\n case 'number':\n obj = { format: summaryformat };\n break;\n case 'datetime':\n obj = { type: 'dateTime', skeleton: summaryformat };\n break;\n case 'date':\n obj = { type: type, skeleton: summaryformat };\n break;\n }\n return obj;\n };\n /**\n * To destroy the Aggregate module\n *\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Aggregate;\n}());\nexport { Aggregate };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Sort as GridSort, Grid, getActualProperties } from '@syncfusion/ej2-grids';\nimport { getParentData } from '../utils';\n/**\n * Internal dataoperations for TreeGrid\n *\n * @hidden\n */\nvar Sort = /** @class */ (function () {\n function Sort(grid) {\n Grid.Inject(GridSort);\n this.parent = grid;\n this.taskIds = [];\n this.flatSortedData = [];\n this.storedIndex = -1;\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Sort module name\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n this.parent.on('createSort', this.createdSortedRecords, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n this.parent.off('createSort', this.createdSortedRecords);\n };\n Sort.prototype.createdSortedRecords = function (sortParams) {\n var data = sortParams.modifiedData;\n var srtQry = sortParams.srtQry;\n this.iterateSort(data, srtQry);\n this.storedIndex = -1;\n sortParams.modifiedData = this.flatSortedData;\n this.flatSortedData = [];\n };\n Sort.prototype.iterateSort = function (data, srtQry) {\n for (var d = 0; d < data.length; d++) {\n if (this.parent.grid.filterSettings.columns.length > 0 || this.parent.grid.searchSettings.key !== '') {\n if (!isNullOrUndefined(getParentData(this.parent, data[d].uniqueID, true))) {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[d];\n }\n }\n else {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[d];\n }\n if (data[d].hasChildRecords) {\n var childSort = (new DataManager(data[d].childRecords).executeLocal(srtQry));\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { Grid, ContextMenu as cmenu } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, select } from '@syncfusion/ej2-base';\n/**\n * ContextMenu Module for TreeGrid\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent) {\n Grid.Inject(cmenu);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on('contextMenuOpen', this.contextMenuOpen, this);\n this.parent.on('contextMenuClick', this.contextMenuClick, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('contextMenuOpen', this.contextMenuOpen);\n this.parent.off('contextMenuClick', this.contextMenuClick);\n };\n ContextMenu.prototype.contextMenuOpen = function (args) {\n var addRow = select('#' + this.parent.element.id + '_gridcontrol_cmenu_AddRow', args.element);\n var editRecord = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Edit', args.element);\n if (addRow) {\n if (this.parent.grid.editSettings.allowAdding === false) {\n addRow.style.display = 'none';\n }\n else {\n addRow.style.display = 'block';\n }\n }\n if ((this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch')\n && !(isNullOrUndefined(editRecord)) && !(editRecord.classList.contains('e-menu-hide'))) {\n editRecord.style.display = 'none';\n }\n };\n ContextMenu.prototype.contextMenuClick = function (args) {\n if (args.item.id === 'Above' || args.item.id === 'Below' || args.item.id === 'Child') {\n this.parent.notify('savePreviousRowPosition', args);\n this.parent.setProperties({ editSettings: { newRowPosition: args.item.id } }, true);\n this.parent.addRecord();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ContextMenu module name\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Gets the context menu element from the TreeGrid.\n *\n * @returns {Element} Return Context Menu root element.\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.parent.grid.contextMenuModule.getContextMenu();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend, setValue, getValue, merge } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\nimport { classList } from '@syncfusion/ej2-base';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.cell.cellIndex;\n var frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();\n if (frozenCols && args.columnObject.index > frozenCols) {\n actualCellIndex = actualCellIndex + frozenCols;\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n var colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;\n if (colCount === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n }\n else if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[this.addRowIndex][parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[this.addRowIndex][parentItem]) {\n parentUniqueID = this.batchRecords[this.addRowIndex][parentItem][uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[rowObjectIndex].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[this.addRowIndex][level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[rowObjectIndex].data = added;\n this.newBatchRowAdded = false;\n }\n if (this.parent.frozenColumns || this.parent.getFrozenColumns()\n && this.parent.grid.getRowsObject()[rowObjectIndex].edit === 'add') {\n merge(this.currentViewRecords[rowObjectIndex], this.parent.grid.getRowsObject()[rowObjectIndex].changes);\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[isTabLastRow] = false;\n return;\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && this.parent.grid.selectedRowIndex === -1) {\n this.selectedIndex = this.parent.editModule['selectedIndex'];\n this.addRowIndex = this.parent.editModule['addRowIndex'];\n this.addRowRecord = this.parent.getCurrentViewRecords()[this.selectedIndex];\n }\n else {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.parent.editModule['addRowIndex'] = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex'])) {\n classList(this.parent.grid.getDataRows()[0], ['e-batchrow'], []);\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('aria-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[i]);\n if (this.parent.frozenRows || this.parent.frozenColumns || this.parent.getFrozenColumns()) {\n row.push(this.parent.grid.getMovableRows()[i]);\n }\n }\n }\n if (!isNullOrUndefined(data.parentItem)) {\n var parentItem = getParentData(this.parent, data.parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(data);\n parentItem.childRecords.splice(childIndex, 1);\n }\n this.batchDeletedRecords = extendArray(this.batchDeletedRecords);\n this.batchDeletedRecords.push(data);\n }\n childs.push(data);\n records = childs;\n for (var i = 0; i < records.length; i++) {\n var indexvalue = this.batchRecords.map(function (e) { return e[primarykey]; }).indexOf(records[i][primarykey]);\n if (indexvalue !== -1) {\n this.batchRecords.splice(indexvalue, 1);\n }\n }\n for (var i = 0; i < row.length; i++) {\n if (!isNullOrUndefined(row[i])) {\n this.parent.grid.selectionModule.selectedRecords.push(row[i]);\n }\n }\n };\n BatchEdit.prototype.updateRowIndex = function () {\n var rows = this.parent.grid.getDataRows();\n for (var i = 0; i < rows.length; i++) {\n rows[i].setAttribute('aria-rowindex', i.toString());\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var mRows = this.parent.grid.getMovableDataRows();\n var freezeRightRows = this.parent.grid.getFrozenRightDataRows();\n for (var i = 0; i < mRows.length; i++) {\n mRows[i].setAttribute('aria-rowindex', i.toString());\n if (freeze) {\n freezeRightRows[i].setAttribute('aria-rowindex', i.toString());\n }\n }\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[addedRecords][i][parentItem])) {\n if (this.parent.getBatchChanges()[addedRecords][i][parentItem][primaryKey] === records[this.addRowIndex][primaryKey]) {\n this.batchChildCount = this.batchChildCount + 1;\n }\n }\n }\n };\n BatchEdit.prototype.beforeBatchSave = function (e) {\n var changeRecords = 'changedRecords';\n var deleterecords = 'deletedRecords';\n var changedRecords = e.batchChanges[changeRecords];\n if (e.batchChanges[changeRecords].length) {\n var columnName = void 0;\n for (var i = 0; i < changedRecords.length; i++) {\n editAction({ value: changedRecords[i], action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName);\n }\n }\n if (e.batchChanges[deleterecords].length) {\n var deletedRecords = e.batchChanges[deleterecords];\n var record = deletedRecords;\n for (var i = 0; i < record.length; i++) {\n this.deleteUniqueID(record[i].uniqueID);\n var childs = findChildrenRecords(record[i]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[c].uniqueID);\n }\n e.batchChanges[deleterecords] = e.batchChanges[deleterecords].concat(childs);\n }\n }\n this.isAdd = false;\n };\n BatchEdit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n BatchEdit.prototype.batchCancelAction = function () {\n var targetElement = 'targetElement';\n var index;\n var parentItem = 'parentItem';\n var indexvalue = 'index';\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var childRecords = 'childRecords';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (!isNullOrUndefined(this.batchAddedRecords)) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchAddedRecords[i][parentItem] ? this.batchAddedRecords[i][parentItem][primaryKey]\n : this.batchAddedRecords[i][primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[index])) {\n var children = currentViewRecords[index][childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[j][primaryKey] === this.batchAddedRecords[i][primaryKey]) {\n currentViewRecords[index][childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[targetElement])) {\n var row = this.parent[targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[i][parentItem])) {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchDeletedRecords[i][parentItem][primaryKey]);\n var positionIndex = this.batchDeletedRecords[i][indexvalue] === 0 ? this.batchDeletedRecords[i][indexvalue] :\n this.batchDeletedRecords[i][indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[index])) {\n currentViewRecords[index][childRecords].splice(positionIndex, 0, this.batchDeletedRecords[i]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (this.parent.editModule['isAddedRowByMethod'] && addRecords.length && !isNullOrUndefined(this.parent.editModule['addRowIndex'])) {\n var index_1 = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[0].getAttribute('aria-rowindex'), 10);\n data.splice(index_1, 0, addRecords[0]);\n }\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(currentViewRecords[0][primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[i]);\n delete taskData.parentItem;\n delete taskData.uniqueID;\n delete taskData.index;\n delete taskData.level;\n delete taskData.hasChildRecords;\n delete taskData.childRecords;\n delete taskData.parentUniqueID;\n if (!isNullOrUndefined(taskData.primaryParent)) {\n delete taskData.primaryParent;\n }\n addRecords[i].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[i];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[i].parentItem)) {\n updateParentRow(primarykey_1, addRecords[i].parentItem, 'add', this.parent, this.isSelfReference, addRecords[i]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[i].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[i], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[i][parentItem]) &&\n (isNullOrUndefined(this.parent.editModule['addRowIndex']) || this.isSelfReference)) {\n var indexValue = currentViewRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(addRecords[i][parentItem][primarykey_1]);\n var children = currentViewRecords[indexValue][childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[j][primarykey_1] === addRecords[i][primarykey_1]) {\n currentViewRecords[indexValue][childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[deletedRecords].length) {\n for (i = 0; i < batchChanges[deletedRecords].length; i++) {\n editAction({ value: batchChanges[deletedRecords][i], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_1 = 0; i_1 < data.length; i_1++) {\n data[i_1][index] = i_1;\n setValue('uniqueIDCollection.' + data[i_1][uniqueID] + '.index', i_1, this.parent);\n if (!data[i_1][level]) {\n this.parent.parentData.push(data[i_1]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[i][index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n args[index] = this.parent.getSelectedRows()[0][rowIndex];\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.ariaRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[rowIndex][treeObj.getPrimaryKeyFieldNames()[0]] : -1;\n treeObj.grid.query.addParams('relationalKey', keyData);\n }\n else if (eventName === 'actionComplete') {\n var paramsLength = treeObj.grid.query.params.length;\n for (var i = 0; i < paramsLength; i++) {\n if (treeObj.grid.query.params[i].key === 'relationalKey') {\n treeObj.grid.query.params.splice(i);\n }\n }\n }\n }\n if (this.parent.enableInfiniteScrolling && eventName === 'actionComplete') {\n this.infiniteAddAction(eventArgs);\n }\n if (this.parent.editSettings.mode === 'Batch' && eventArgs.requestType === 'paging') {\n this.parent.notify('batchPageAction', {});\n }\n };\n Edit.prototype.infiniteAddAction = function (args) {\n if ((args.requestType === 'save' && args.action === 'add') || args.requestType === 'delete') {\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.selectedIndex !== -1\n && (args.requestType === 'save' && args.action === 'add')) {\n var rowObjects = this.parent.grid.getRowsObject();\n var newRowObject = rowObjects.splice(0, 1)[0];\n var newRowObjectIndex = this.addRowIndex;\n var currentData = this.parent.getCurrentViewRecords();\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n newRowObjectIndex += findChildrenRecords(currentData[newRowObjectIndex + 1]).length;\n }\n newRowObjectIndex = this.parent.editSettings.newRowPosition === 'Below' ? newRowObjectIndex + 1 : newRowObjectIndex;\n rowObjects.splice(newRowObjectIndex, 0, newRowObject);\n var newRecord = currentData.splice(0, 1)[0];\n currentData.splice(newRowObjectIndex, 0, newRecord);\n this.updateInfiniteCurrentViewData(newRecord, this.addRowIndex);\n }\n var movableRows = this.parent.grid.getMovableRows();\n var movableRowsObject = this.parent.grid.getMovableRowsObject();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (!isCache) {\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n }\n if (!isCache && this.parent.getFrozenColumns() > 0) {\n resetRowIndex(this.parent.grid, movableRowsObject, movableRows, 0);\n this.updateIndex(this.parent.grid.dataSource, movableRows, this.parent.getCurrentViewRecords());\n }\n }\n };\n Edit.prototype.updateInfiniteCurrentViewData = function (newRecord, newRowIndex) {\n var _this = this;\n var infiniteData = 'infiniteCurrentViewData';\n var updateCurrentViewData = 'updateCurrentViewData';\n var size = Math.ceil(newRowIndex / this.parent.grid.pageSettings.pageSize);\n var page = size > 0 ? size : 1;\n var dataIndex = newRowIndex - ((page - 1) * this.parent.pageSettings.pageSize);\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n infiniteCurrentViewData[1].splice(0, 1);\n var data = infiniteCurrentViewData[page];\n if (!isNullOrUndefined(this.addRowRecord)) {\n data.filter(function (e, index) {\n if (e.uniqueID === _this.addRowRecord.uniqueID) {\n dataIndex = index;\n }\n });\n if (this.addRowRecord.hasChildRecords && this.addRowRecord.childRecords.length &&\n this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n dataIndex += findChildrenRecords(this.addRowRecord).length;\n }\n }\n if (dataIndex >= this.parent.pageSettings.pageSize) {\n page += 1;\n data = infiniteCurrentViewData[page];\n dataIndex = dataIndex - this.parent.pageSettings.pageSize >= 0 ? dataIndex - this.parent.pageSettings.pageSize : 0;\n }\n dataIndex = this.parent.editSettings.newRowPosition === 'Below' ? dataIndex + 1 : dataIndex;\n data.splice(dataIndex, 0, newRecord);\n this.parent.grid.infiniteScrollModule[updateCurrentViewData]();\n };\n Edit.prototype.recordDoubleClick = function (args) {\n var target = args.target;\n if (isNullOrUndefined(target.closest('td.e-rowcell'))) {\n return;\n }\n if (!(this.parent.grid.editSettings.allowEditing) || this.parent.grid.isEdit) {\n return;\n }\n var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('aria-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('aria-rowindex');\n tr.setAttribute('aria-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[promise];\n delete args[promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex) && this.prevAriaRowIndex !== '-1') {\n args.row.setAttribute('aria-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEdit', false, this.parent.grid);\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else if (this.parent.getFrozenRightRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getFrozenRightRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getMovableRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getMovableRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n var mRow;\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {\n mRow = this.parent.grid.getRows()[rowIndex];\n }\n else if (args.cell.closest('.e-movableheader') || args.cell.closest('.e-movablecontent')) {\n mRow = this.parent.grid.getMovableRows()[rowIndex];\n }\n else {\n mRow = this.parent.grid.getFrozenRightRows()[rowIndex];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n else if (this.parent.getFrozenColumns() > 0) {\n if (args.cell.closest('.e-frozenheader') || args.cell.closest('.e-frozencontent')) {\n mRow = this.parent.grid.getRows()[rowIndex];\n }\n else {\n mRow = this.parent.grid.getMovableRows()[rowIndex];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n removeClass([row], ['e-editedrow', 'e-batchrow']);\n removeClass(row.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n if (this.parent['isCellSaveFocus'] !== false) {\n this.parent.grid.focusModule.restoreFocus();\n }\n editAction({ value: args.rowData, action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, args.columnName);\n if ((row.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'enter') {\n this.keyPress = null;\n }\n var saveArgs = {\n type: 'save', column: this.parent.getColumnByField(args.columnName), data: args.rowData,\n previousData: args.previousValue, row: row, target: args.cell\n };\n if (this.parent.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n this.parent.grid.refresh();\n }\n this.parent.trigger(events.actionComplete, saveArgs);\n };\n Edit.prototype.lastCellTab = function () {\n if (!this.parent.grid.isEdit && this.isOnBatch && this.keyPress === 'tab' && this.parent.editSettings.mode === 'Cell') {\n if (!this.parent.editSettings.allowNextRowEdit) {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n this.keyPress = null;\n }\n else {\n this.enableToolbarItems('edit');\n }\n }\n };\n Edit.prototype.updateCell = function (args, rowIndex) {\n this.parent.grid.editModule.updateCell(rowIndex, args.columnName, args.rowData[args.columnName]);\n this.parent.grid.getRowsObject()[rowIndex].data = args.rowData;\n };\n Edit.prototype.crudAction = function (details, columnName) {\n editAction(details, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName, this.addRowRecord);\n this.parent.parentData = [];\n var data = this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n data[i].index = i;\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (details.value[key] === data[i][key]) {\n if (details.action === 'add') {\n data[i].level = this.internalProperties.level;\n data[i].taskData = this.internalProperties.taskData;\n data[i].uniqueID = this.internalProperties.uniqueID;\n if (!isNullOrUndefined(this.internalProperties.parentItem)) {\n data[i].parentItem = this.internalProperties.parentItem;\n data[i].parentUniqueID = this.internalProperties.parentUniqueID;\n }\n data[i].childRecords = this.internalProperties.childRecords;\n }\n }\n setValue('uniqueIDCollection.' + data[i].uniqueID + '.index', i, this.parent);\n var adaptor = this.parent.dataSource.adaptor;\n if ((isRemoteData(this.parent) || adaptor instanceof RemoteSaveAdaptor)) {\n setValue('uniqueIDCollection.' + data[i].uniqueID, data[i], this.parent);\n }\n if (!data[i].level) {\n this.parent.parentData.push(data[i]);\n }\n }\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[j];\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[l].classList.contains('e-gridrowindex0level0')) {\n treeColIndex = l;\n break;\n }\n }\n }\n for (var k = 0; k < this.parent.getRows().length; k++) {\n if (!rows[k].classList.contains('e-detailrow')) {\n count++;\n }\n var data2 = records[count];\n var index = data2.index;\n var level = data2.level;\n var row = rows[k];\n if (!isNullOrUndefined(data2.parentItem)) {\n index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);\n }\n var treecell = row.cells[treeColIndex];\n if (!isNullOrUndefined(treecell)) {\n for (var l = 0; l < treecell.classList.length; l++) {\n var value = treecell.classList[l];\n var remove = /e-gridrowindex/i;\n var removed = /e-griddetailrowindex/i;\n var result = value.match(remove);\n var results = value.match(removed);\n if (result != null) {\n removeClass([treecell], value);\n }\n if (results != null) {\n removeClass([treecell], value);\n }\n }\n if (!rows[k].classList.contains('e-detailrow')) {\n addClass([treecell], 'e-gridrowindex' + index + 'level' + level);\n }\n else {\n addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);\n }\n }\n }\n };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[index]) && records[index].expanded) {\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n index += findChildrenRecords(records[index]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.batchEditModule.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(records[index]).length;\n }\n }\n }\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange\n && (index || (this.parent.editSettings.newRowPosition === 'Child'\n || this.parent.editSettings.newRowPosition === 'Below'))) {\n if (index >= rows.length - 1) {\n index = rows.length - 2;\n }\n var r = 'rows';\n var newRowObject = this.parent.grid.contentModule[r][0];\n var focussedElement = document.activeElement;\n rows[index + 1][position](rows[0]);\n setValue('batchIndex', index + 1, this.batchEditModule);\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Above' ? index : index + 1;\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[r].splice(0, 1);\n this.parent.grid.contentModule[r].splice(rowObjectIndex, 0, newRowObject);\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var movableRows = this.parent.getMovableDataRows();\n var frows = 'freezeRows';\n var newFreezeRowObject = this.parent.grid.getRowsObject()[0];\n movableRows[index + 1][position](movableRows[0]);\n if (freeze) {\n var rightFrozenRows = this.parent.getFrozenRightDataRows();\n rightFrozenRows[index + 1][position](rightFrozenRows[0]);\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[frows].splice(0, 1);\n this.parent.grid.contentModule[frows].splice(rowObjectIndex, 0, newFreezeRowObject);\n }\n setValue('batchIndex', index + 1, this.batchEditModule);\n }\n if (this.parent.editSettings.mode === 'Row' || this.parent.editSettings.mode === 'Cell') {\n var errors = this.parent.grid.getContentTable().querySelectorAll('.e-griderror');\n for (var i = 0; i < errors.length; i++) {\n errors[i].remove();\n }\n setValue('errorRules', [], this.parent.grid.editModule.formObj);\n }\n if (isVirtualization) {\n this.prevAriaRowIndex = '-1';\n }\n focussedElement.focus();\n }\n }\n if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1) {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.editModule['isAddedRowByMethod']) {\n var args = {\n action: 'add',\n data: this.parent.getBatchChanges()['addedRecords'][0],\n index: index,\n seletedRow: 0\n };\n this.parent.editModule.beginAddEdit(args);\n this.parent.editModule.batchEditModule['batchAddRowRecord'].push(this.parent.editModule.batchEditModule['addRowRecord']);\n this.parent.editModule.batchEditModule['batchAddedRecords'].push(args['data']);\n }\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[primaryKeys_2[0]] === args.data[i][primaryKeys_2[0]]) {\n data_1[i] = e;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < data_1.length; i++) {\n _loop_1(i);\n }\n }\n for (var i = 0; i < data_1.length; i++) {\n this.deleteUniqueID(data_1[i].uniqueID);\n var childs = findChildrenRecords(data_1[i]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[c].uniqueID);\n }\n args.data = args.data.concat(childs);\n }\n }\n if (args.requestType === 'add' || (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling))) {\n if (!(this.parent.grid.selectedRowIndex === -1 && this.isAddedRowByMethod)\n && args.index === this.parent.grid.selectedRowIndex || args.index === 0) {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n }\n if (this.parent.enableVirtualization) {\n var selector = '.e-row[aria-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[aria-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[args.index];\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' && isNullOrUndefined(this.addRowRecord)\n && !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = this.parent.grid.getCurrentViewRecords();\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.grid.getCurrentViewRecords().indexOf(this.addRowRecord);\n this.selectedIndex = parseInt(this.parent.getRows()[this.addRowIndex].getAttribute('aria-rowindex'), 10);\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? currentData.indexOf(currentData[0]) : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[i].parentItem) {\n var parentItem = getParentData(this.parent, deletedValues[i].parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(deletedValues[i]);\n parentItem.childRecords.splice(childIndex, 1);\n }\n }\n }\n }\n return args;\n };\n /**\n * If the data,index and position given, Adds the record to treegrid rows otherwise it will create edit form.\n *\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index, position) {\n if (this.parent.editSettings.newRowPosition === this.previousNewRowPosition || this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n if (!this.isSelfReference && !isNullOrUndefined(data) && Object.hasOwnProperty.call(data, this.parent.childMapping)) {\n var addRecords = [];\n var previousEditMode = this.parent.editSettings.mode;\n var previousGridEditMode = this.parent.grid.editSettings.mode;\n addRecords.push(data);\n this.parent.setProperties({ editSettings: { mode: 'Batch' } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: 'Batch' } }, true);\n if (!isNullOrUndefined(position)) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n var updatedRecords = { addedRecords: addRecords, changedRecords: [], deletedRecords: [] };\n this.parent.notify(events.batchSave, { updatedRecords: updatedRecords, index: index });\n this.parent.setProperties({ editSettings: { mode: previousEditMode } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: previousGridEditMode } }, true);\n this.parent.refresh();\n }\n else {\n if (data) {\n if (index > -1) {\n this.selectedIndex = index;\n this.addRowIndex = index;\n }\n else {\n this.selectedIndex = this.parent.selectedRowIndex;\n this.addRowIndex = this.parent.selectedRowIndex;\n }\n if (position) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n this.parent.grid.editModule.addRecord(data, index);\n }\n else {\n this.parent.grid.editModule.addRecord(data, index);\n }\n }\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} Returns form validation results\n */\n Edit.prototype.editFormValidate = function () {\n return this.parent.grid.editModule.editFormValidate();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.destroyForm = function () {\n this.parent.grid.editModule.destroyForm();\n };\n Edit.prototype.contentready = function (e) {\n if (!isNullOrUndefined(e.args.requestType)\n && (e.args.requestType.toString() === 'delete' || e.args.requestType.toString() === 'save'\n || (this.parent.editSettings.mode === 'Batch' && e.args.requestType.toString() === 'batchsave'))) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns) {\n if (this.parent.grid.dataSource.length === this.parent.getMovableDataRows().length) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getMovableDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n }\n };\n /**\n * If the row index and field is given, edits the particular cell in a row.\n *\n * @returns {void}\n */\n Edit.prototype.editCell = function (rowIndex, field) {\n if (this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch') {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n this.parent.grid.editModule.editCell(rowIndex, field);\n }\n };\n return Edit;\n}());\nexport { Edit };\n","import { Grid, CommandColumn as Command } from '@syncfusion/ej2-grids';\n/**\n * Command Column Module for TreeGrid\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent) {\n Grid.Inject(Command);\n this.parent = parent;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns CommandColumn module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n //this.removeEventListener();\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","import { Grid, getObject } from '@syncfusion/ej2-grids';\nimport { DetailRow as detailrow } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isRemoteData } from '../utils';\n/**\n * TreeGrid Detail Row module\n *\n * @hidden\n */\nvar DetailRow = /** @class */ (function () {\n function DetailRow(parent) {\n Grid.Inject(detailrow);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns DetailRow module name\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n DetailRow.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.on('detaildataBound', this.detaildataBound, this);\n this.parent.grid.on('detail-indentcell-info', this.setIndentVisibility, this);\n this.parent.on('childRowExpand', this.childRowExpand, this);\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('actioncomplete', this.actioncomplete, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DetailRow.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.off('detaildataBound', this.detaildataBound);\n this.parent.off('childRowExpand', this.childRowExpand);\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('actioncomplete', this.actioncomplete);\n this.parent.grid.off('detail-indentcell-info', this.setIndentVisibility);\n };\n DetailRow.prototype.setIndentVisibility = function (args) {\n var visible = 'visible';\n args[visible] = false;\n };\n DetailRow.prototype.dataBoundArg = function () {\n var detailele = this.parent.getRows().filter(function (e) {\n return !e.classList.contains('e-detailrow');\n });\n for (var i = 0; i < detailele.length; i++) {\n var elements = detailele[i].getElementsByClassName('e-detailrowcollapse');\n var detailData = this.parent.grid.getRowObjectFromUID(detailele[i].getAttribute('data-Uid'));\n var parentItem = getObject('parentItem', this.parent.grid.getCurrentViewRecords()[i]);\n if (isNullOrUndefined(parentItem) || !isNullOrUndefined(parentItem) &&\n getExpandStatus(this.parent, detailData.data, this.parent.grid.getCurrentViewRecords())) {\n this.parent.grid.detailRowModule.expand(elements[0]);\n }\n }\n };\n DetailRow.prototype.childRowExpand = function (args) {\n var detailRowElement = args.row.getElementsByClassName('e-detailrowcollapse');\n if (!isNullOrUndefined(detailRowElement[0])) {\n this.parent.grid.detailRowModule.expand(detailRowElement[0]);\n }\n };\n DetailRow.prototype.rowExpandCollapse = function (args) {\n if (isRemoteData(this.parent)) {\n return;\n }\n for (var i = 0; i < args.detailrows.length; i++) {\n args.detailrows[i].style.display = args.action;\n }\n };\n DetailRow.prototype.detaildataBound = function (args) {\n var data = args.data;\n var row = args.detailElement.parentElement.previousSibling;\n var index = !isNullOrUndefined(data.parentItem) ? data.parentItem.index : data.index;\n var expandClass = 'e-gridrowindex' + index + 'level' + data.level;\n var classlist = row.querySelector('.' + expandClass).classList;\n var gridClas = [].slice.call(classlist).filter(function (gridclass) { return (gridclass === expandClass); });\n var newNo = gridClas[0].length;\n var slicedclas = gridClas.toString().slice(6, newNo);\n var detailClass = 'e-griddetail' + slicedclas;\n addClass([args.detailElement.parentElement], detailClass);\n };\n DetailRow.prototype.actioncomplete = function (args) {\n if (args.requestType === 'beginEdit' || args.requestType === 'add') {\n var spann = (args.row.querySelectorAll('.e-editcell')[0].getAttribute('colSpan'));\n var colum = parseInt(spann, 10) - 1;\n var updtdcolum = colum.toString();\n args.row.querySelectorAll('.e-editcell')[0].setAttribute('colSpan', updtdcolum);\n }\n var focusElement = this.parent.grid.contentModule.getRows();\n for (var i = 0; i < focusElement.length; i++) {\n focusElement[i].cells[0].visible = false;\n }\n var focusModule = getObject('focusModule', this.parent.grid);\n var matrix = 'refreshMatrix';\n focusModule[matrix](true)({ rows: this.parent.grid.contentModule.getRows() });\n };\n /**\n * Destroys the DetailModule.\n *\n * @function destroy\n * @returns {void}\n */\n DetailRow.prototype.destroy = function () {\n this.removeEventListener();\n };\n return DetailRow;\n}());\nexport { DetailRow };\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})();\nimport { Cell, CellType } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '@syncfusion/ej2-grids';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('aria-rowindex'), 10) === index; })[0];\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if (this.recordAdded && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[action]('data-ready', this.onDataReady, this);\n this.parent[action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction());\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[action]('edit-reset', this.resetIseditValue, this);\n this.parent[action]('get-virtual-data', this.getData, this);\n this.parent[action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n if (!this.parent.enableColumnVirtualization) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || (this.isDataSourceChanged && this.startIndex === -1)) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (this.parent.getRows().length && !this[initialRowTop] && !isNullOrUndefined(this.parent.getRowByIndex(0))) {\n var rowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top;\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (rowTop > 0) {\n this[initialRowTop] = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n else {\n this[initialRowTop] = this.content.getBoundingClientRect().top -\n this.parent.getRowByIndex(0).getBoundingClientRect().height;\n }\n }\n _super.prototype[dataBoundEve].call(this);\n };\n VirtualTreeContentRenderer.prototype.rowSelectedEvent = function (args) {\n var rowSelected = 'rowSelected';\n _super.prototype[rowSelected].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectVirtualRow = function (args) {\n if (this.parent.isEdit) {\n return;\n }\n var selectVirtualRow = 'selectVirtualRow';\n var containerRect = 'containerRect';\n if (isNullOrUndefined(this.observer[containerRect])) {\n this.observer[containerRect] = this.observers[containerRect];\n }\n if (isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule) || args.selectedIndex !== 0 ||\n isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule['addRowIndex'])) {\n _super.prototype[selectVirtualRow].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.refreshCell = function (rowObj) {\n rowObj.cells = this.generateCells();\n };\n VirtualTreeContentRenderer.prototype.generateCells = function () {\n var cells = [];\n for (var i = 0; i < this.parent.columns.length; i++) {\n cells.push(this.generateCell(this.parent.columns[i]));\n }\n return cells;\n };\n VirtualTreeContentRenderer.prototype.generateCell = function (col, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': col.visible,\n 'isDataCell': !isNullOrUndefined(col.field || col.template),\n 'isTemplate': !isNullOrUndefined(col.template),\n 'rowID': rowId,\n 'column': col,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': col.commands,\n 'isForeignKey': col.isForeignColumn && col.isForeignColumn(),\n 'foreignKeyData': col.isForeignColumn && col.isForeignColumn() && getValue(col.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n VirtualTreeContentRenderer.prototype.beginEdit = function (e) {\n var selector = '.e-row[aria-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[index];\n e.data = rowData;\n };\n VirtualTreeContentRenderer.prototype.beginAdd = function (args) {\n var addAction = 'addActionBegin';\n var isAdd = 'isAdd';\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, ariaRowIndex: this.ariaRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.ariaRowIndex = addArgs.ariaRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[isAdd]) {\n _super.prototype[resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, ariaRowIndex: this.ariaRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.ariaRowIndex = addArgs.ariaRowIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[preventEvent]) {\n _this.parent.showSpinner();\n }\n var xAxis = current.axis === 'X';\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0]\n - 1);\n if (xAxis) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n _this.virtualEle.adjustTable(x, _this.translateY);\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n var info = scrollArgs.sentinel;\n var outBuffer = this.parent.pageSettings.pageSize - Math.ceil(this.parent.pageSettings.pageSize / 2);\n var content = this.parent.getContent().querySelector('.e-content');\n var scrollHeight = outBuffer * this.parent.getRowHeight();\n var upScroll = (scrollArgs.offset.top - this.translateY) < 0;\n var downScroll = Math.ceil(scrollArgs.offset.top - this.translateY) >= scrollHeight;\n var selectedRowIndex = 'selectedRowIndex';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / this.parent.getRowHeight())\n + Math.ceil(vHeight / this.parent.getRowHeight()))\n - this.parent.pageSettings.pageSize;\n index = (index > 0) ? index : 0;\n if (!isNullOrUndefined(this[selectedRowIndex]) && this[selectedRowIndex] !== -1 && index !== this[selectedRowIndex]) {\n index = this[selectedRowIndex];\n }\n this.startIndex = index;\n this.endIndex = index + this.parent.pageSettings.pageSize;\n if (this.endIndex > this.totalRecords) {\n var lastInx = this.totalRecords - 1;\n var remains = this.endIndex % lastInx;\n this.endIndex = lastInx;\n this.startIndex = (this.startIndex - remains) < 0 ? 0 : (this.startIndex - remains);\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / this.parent.getRowHeight());\n rowPt = rowPt % this.parent.pageSettings.pageSize;\n var firsttdinx = 0;\n if (!isNullOrUndefined(this.parent.getRows()[rowPt]) &&\n !isNullOrUndefined(this.parent.getContent().querySelectorAll('.e-content tr')[rowPt])) {\n var attr = this.parent.getContent().querySelectorAll('.e-content tr')[rowPt]\n .querySelector('td').getAttribute('index');\n firsttdinx = +attr; // this.parent.getContent().querySelector('.e-content tr').getAttribute('aria-rowindex');\n }\n if (firsttdinx === 0) {\n this.translateY = scrollArgs.offset.top;\n }\n else {\n var height = this.parent.getRowHeight();\n this.translateY = (scrollArgs.offset.top - (outBuffer * height) > 0) ?\n scrollArgs.offset.top - (outBuffer * height) + 10 : 0;\n }\n }\n else if (downScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var isLastBlock = (this[selectedRowIndex] + this.parent.pageSettings.pageSize) < this.totalRecords ? false : true;\n if (!isNullOrUndefined(this[selectedRowIndex]) && this[selectedRowIndex] !== -1 &&\n nextSetResIndex !== this[selectedRowIndex] && !isLastBlock) {\n nextSetResIndex = this[selectedRowIndex];\n }\n var lastIndex = nextSetResIndex + this.parent.pageSettings.pageSize;\n if (lastIndex > this.totalRecords) {\n lastIndex = nextSetResIndex +\n (this.totalRecords - nextSetResIndex);\n }\n this.startIndex = !isLastBlock ? lastIndex - this.parent.pageSettings.pageSize : nextSetResIndex;\n this.endIndex = lastIndex;\n if (scrollArgs.offset.top > (this.parent.getRowHeight() * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (this.parent.getRowHeight() * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left')) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.ariaRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[restoreAdd].call(this);\n _super.prototype[ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback) {\n var containerRect = 'containerRect';\n _super.prototype[containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback), this);\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this[options].prevTop = this[options].prevLeft = 0;\n return function (e) {\n var top = _this[options].movableContainer ? _this[options].container.scrollTop : e.target.scrollTop;\n var left = _this[options].movableContainer ? _this[options].scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this[options].prevTop < top ? 'down' : 'up';\n direction = _this[options].prevLeft === left ? direction : _this[options].prevLeft < left ? 'right' : 'left';\n _this[options].prevTop = top;\n _this[options].prevLeft = left;\n var current = _this.sentinelInfo[direction];\n var delta = 0;\n _this.newPos = top;\n if (_this.lastPos != null) { // && newPos < maxScroll\n delta = _this.newPos - _this.lastPos;\n }\n _this.lastPos = _this.newPos;\n if (_this.timer) {\n clearTimeout(_this.timer);\n }\n _this.timer = setTimeout(_this.clear, 0);\n if ((delta > 100 || delta < -100) && (e && e.preventDefault)) {\n e.returnValue = false;\n e.preventDefault();\n }\n if (_this[options].axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered && current.axis === 'X') {\n if (_this[movableEle] && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this[movableEle], current, direction, { top: top, left: left }, _this[fromWheel], check);\n }\n else {\n onEnterCallback(_this[element], current, direction, { top: top, left: left }, _this[fromWheel], check);\n }\n }\n if (check) {\n var fn = debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n }\n _this[fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\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})();\nimport { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n if (this.parent.enableVirtualization && this.parent.selectionSettings.mode === 'Cell' ||\n this.parent.selectionSettings.mode === 'Row' && !this.parent.selectionSettings.persistSelection) {\n this.parent.grid.clearSelection();\n }\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' || requestType === 'searching' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length)) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else if (!this.parent['isExpandAll']) {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n //renderer.addRenderer(RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this)));\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parentGrid.height :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\n","import { parentsUntil } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getMovableDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getFrozenRightRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var rData = this.parent.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n rows[i].style.display = args.action;\n if (freeze) {\n frozenRightRows[i].style.display = args.action;\n }\n var queryselector = args.action === 'none' ? '.e-treecolumn-container .e-treegridcollapse'\n : '.e-treecolumn-container .e-treegridexpand';\n if (frozenrows[rows[i].rowIndex].querySelector(queryselector)) {\n var cRow = [];\n for (var i_1 = 0; i_1 < movableRows.length; i_1++) {\n if (movableRows[i_1].querySelector('.e-gridrowindex' + rData.index + 'level' + (rData.level + 1))) {\n cRow.push(movableRows[i_1]);\n }\n }\n if (cRow.length) {\n this.rowExpandCollapse({ detailrows: cRow, action: args.action });\n }\n }\n }\n };\n Freeze.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, 'e-rowcell') &&\n this.parent.grid.editSettings.allowEditOnDblClick && this.parent.editSettings.mode !== 'Cell') {\n this.parent.grid.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Grid, ColumnChooser as GridColumnChooser } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnChooser module\n *\n * @hidden\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance.\n */\n function ColumnChooser(parent) {\n Grid.Inject(GridColumnChooser);\n this.parent = parent;\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @returns {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n return this.parent.grid.columnChooserModule.openColumnChooser(X, Y);\n };\n /**\n * Destroys the openColumnChooser.\n *\n * @function destroy\n * @returns {void}\n */\n ColumnChooser.prototype.destroy = function () {\n //this.parent.grid.ColumnChooserModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnChooser module name\n */\n ColumnChooser.prototype.getModuleName = function () {\n return 'ColumnChooser';\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { Grid, InfiniteScroll as GridInfiniteScroll } from '@syncfusion/ej2-grids';\nimport { RowRenderer, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getExpandStatus } from '../utils';\n/**\n * TreeGrid Infinite Scroll module will handle Infinite Scrolling.\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function InfiniteScroll(parent) {\n this.parent = parent;\n Grid.Inject(GridInfiniteScroll);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.pagingActions, this.infinitePageAction, this);\n this.parent.on('infinite-remote-expand', this.infiniteRemoteExpand, this);\n this.parent.grid.on('delete-complete', this.infiniteDeleteHandler, this);\n this.parent.grid.on('infinite-edit-handler', this.infiniteEditHandler, this);\n this.parent.grid.on('infinite-crud-cancel', this.createRows, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('infinite-remote-expand', this.infiniteRemoteExpand);\n this.parent.grid.off('delete-complete', this.infiniteDeleteHandler);\n this.parent.grid.off('infinite-edit-handler', this.infiniteEditHandler);\n this.parent.off(events.pagingActions, this.infinitePageAction);\n this.parent.grid.off('infinite-crud-cancel', this.createRows);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds);\n };\n /**\n * Handles the Expand Collapse action for Remote data with infinite scrolling.\n *\n * @param {{ index: number, childData: ITreeData[] }} args - expanded row index and its child data\n * @param { number } args.index - expanded row index\n * @param { ITreeData[] } args.childData - child data of expanded row\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteRemoteExpand = function (args) {\n var rowObjects = this.parent.grid.getRowsObject();\n var locator = 'serviceLocator';\n var generateRows = 'generateRows';\n var serviceLocator = this.parent.grid.infiniteScrollModule[locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var rows = this.parent.getRows();\n var position = args.index === rows.length - 1 ? 'after' : 'before';\n var cols = this.parent.grid.getColumns();\n var childRowObjects = this.parent.grid.infiniteScrollModule[generateRows](args.childData, args);\n var childRowElements = [];\n for (var i = 0; i < childRowObjects.length; i++) {\n childRowElements.push(rowRenderer.render(childRowObjects[i], cols));\n }\n rowObjects.splice.apply(rowObjects, [args.index + 1, 0].concat(childRowObjects));\n for (var i = 0; i < childRowElements.length; i++) {\n if (position === 'after') {\n rows[args.index + i][position](childRowElements[i]);\n }\n else {\n rows[args.index + i + 1][position](childRowElements[i]);\n }\n rows.splice(args.index + 1 + i, 0, childRowElements[i]);\n }\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n };\n /**\n * Resetted the row index for expand collapse action for cache support.\n *\n * @returns {void}\n */\n InfiniteScroll.prototype.contentready = function () {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(this.parent.editModule)) {\n var updateIndex = 'updateIndex';\n this.parent.editModule[updateIndex](this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.getFrozenColumns()) {\n this.parent.editModule[updateIndex](this.parent.grid.dataSource, this.parent.getMovableDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n };\n InfiniteScroll.prototype.collapseExpandInfinitechilds = function (row) {\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n /**\n * Handles the page query for Data operations and CRUD actions.\n *\n * @param {{ result: ITreeData[], count: number, actionArgs: object }} pageingDetails - data, its count and action details\n * @param {ITreeData[]} pageingDetails.result - data on scroll action\n * @param {number} pageingDetails.count - data count on scroll action\n * @param {Object} pageingDetails.actionArgs - scroll action details\n * @returns {void}\n */\n InfiniteScroll.prototype.infinitePageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var infiniteParents = dm.executeLocal(new Query().where(expanded));\n var visualData = infiniteParents.filter(function (e) {\n return getExpandStatus(_this.parent, e, infiniteParents);\n });\n var actionArgs = getValue('actionArgs', pageingDetails.actionArgs);\n var actions = getValue('actions', this.parent.grid.infiniteScrollModule);\n var initial = actions.some(function (value) { return value === actionArgs.requestType; });\n var initialRender = initial ? true : this.parent.initialRender ? true : false;\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n if (getValue('isPrinting', pageingDetails.actionArgs)) {\n pageingDetails.result = visualData;\n }\n else {\n var query = new Query();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var size = initialRender ?\n this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :\n this.parent.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (!isNullOrUndefined(actionArgs)) {\n var lastIndex = getValue('lastIndex', this.parent.grid.infiniteScrollModule);\n var firstIndex = getValue('firstIndex', this.parent.grid.infiniteScrollModule);\n if (!isCache && actionArgs.requestType === 'delete') {\n var skip = lastIndex - actionArgs.data.length + 1;\n var take = actionArgs.data.length;\n query = query.skip(skip).take(take);\n }\n else if (isCache && actionArgs.requestType === 'delete' ||\n (actionArgs.requestType === 'save' && actionArgs.action === 'add')) {\n query = query.skip(firstIndex);\n query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if ((pageingDetails.actionArgs['action'] === 'expand' || pageingDetails.actionArgs['action'] === 'collapse') && this.parent.grid.pageSettings.currentPage !== 1) {\n current = 1;\n size = this.parent.pageSettings.pageSize * this.parent.grid.pageSettings.currentPage;\n }\n query = query.page(current, size);\n }\n }\n else {\n query = query.page(current, size);\n }\n dm.dataSource.json = visualData;\n if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n pageingDetails.result = [actionArgs.data];\n }\n else {\n pageingDetails.result = dm.executeLocal(query);\n }\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * Handles the currentviewdata for delete operation.\n *\n * @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details\n * @param {InfiniteScrollArgs} args.e - scroller details while CRUD\n * @param {Object[]} args.result - data details while CRUD\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n var infiniteData = 'infiniteCurrentViewData';\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n var keys = Object.keys(infiniteCurrentViewData);\n if (args.e.requestType === 'delete' && args.result.length > 1) {\n for (var i = 1; i < args.result.length; i++) {\n infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[i]);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {ActionEventArgs} args - crud action details\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteDeleteHandler = function (args) {\n if (args.requestType === 'delete') {\n var rows = this.parent.grid.getRowsObject();\n var rowElms = this.parent.getRows();\n var data = args.data instanceof Array ? args.data : [args.data];\n var keyField = this.parent.grid.getPrimaryKeyFieldNames()[0];\n this.removeRows(rowElms, rows, data, keyField, true);\n if (this.parent.getFrozenColumns() > 0) {\n var mRows = this.parent.grid.getMovableRowsObject();\n var mRowElms = this.parent.grid.getMovableRows();\n this.removeRows(mRowElms, mRows, data, keyField);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {Element[]} rowElms - row elements\n * @param {Row<Column>[]} rows - Row object collection\n * @param {Object[]} data - data collection\n * @param {string} keyField - primary key name\n * @param { boolean} isFrozen - Specifies whether frozen column enabled\n * @returns {void}\n */\n InfiniteScroll.prototype.removeRows = function (rowElms, rows, data, keyField, isFrozen) {\n var _this = this;\n var resetInfiniteCurrentViewData = 'resetInfiniteCurrentViewData';\n var _loop_1 = function (i) {\n rows.filter(function (e, index) {\n if (e.data[keyField] === data[i][keyField]) {\n if (isFrozen) {\n var page = Math.ceil((index + 1) / _this.parent.grid.pageSettings.pageSize);\n _this.parent.grid.infiniteScrollModule[resetInfiniteCurrentViewData](page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[index]);\n rowElms.splice(index, 1);\n }\n });\n };\n for (var i = 0; i < data.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * Handles the row objects for Add operation.\n */\n InfiniteScroll.prototype.createRows = function (eventArgs) {\n var locator = 'serviceLocator';\n var actionArgs = eventArgs.args.e;\n var row = eventArgs.row;\n var serviceLocator = this.parent.grid.infiniteScrollModule[locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var tbody;\n var currentData = this.parent.getCurrentViewRecords();\n var currentRows = eventArgs.isMovable ? this.parent.grid.getMovableRows()\n : this.parent.grid.getDataRows();\n if (eventArgs.isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector('tbody');\n }\n else {\n tbody = !this.parent.grid.isFrozenGrid() ? this.parent.getContent().querySelector('tbody') : eventArgs.isMovable\n ? this.parent.grid.getMovableVirtualContent().querySelector('tbody')\n : this.parent.grid.getFrozenVirtualContent().querySelector('tbody');\n }\n if (this.parent.frozenRows) {\n tbody = eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType !== 'add'\n || !eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType === 'add'\n ? !this.parent.grid.isFrozenGrid() ? this.parent.getHeaderContent().querySelector('tbody')\n : eventArgs.isMovable ? this.parent.grid.getMovableVirtualHeader().querySelector('tbody')\n : eventArgs.isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector('tbody')\n : this.parent.grid.getFrozenVirtualHeader().querySelector('tbody') : tbody;\n }\n var position;\n var addRowIndex = 'addRowIndex';\n var newRowIndex = this.parent.editModule[addRowIndex];\n for (var i = 0; i < row.length; i++) {\n var newRow = rowRenderer.render(row[i], this.parent.grid.getColumns());\n if (actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n if (getValue('selectedIndex', this.parent.editModule) !== -1 && this.parent.editSettings.newRowPosition !== 'Top') {\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n newRowIndex += findChildrenRecords(currentData[newRowIndex + 1]).length;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n newRowIndex -= 1; //// for child position already child record is added in childRecords so subtracting 1\n }\n currentRows[newRowIndex][position](newRow);\n }\n else if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n currentRows[this.parent.editModule[addRowIndex]][position](newRow);\n }\n }\n else if (this.parent.editSettings.newRowPosition === 'Bottom') {\n tbody.appendChild(newRow);\n }\n else {\n tbody.insertBefore(newRow, tbody.firstElementChild);\n }\n }\n else if (actionArgs.requestType === 'delete') {\n tbody.appendChild(newRow);\n }\n }\n eventArgs.cancel = true;\n };\n /**\n * To destroy the infiniteScroll module\n *\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n"],"names":["isRemoteData","parent","dataSource","DataManager","adaptor","ODataAdaptor","WebApiAdaptor","WebMethodAdaptor","CacheAdaptor","UrlAdaptor","isCountRequired","isCheckboxcolumn","i","columns","length","showCheckbox","isFilterChildHierarchy","isNullOrUndefined","grid","searchSettings","key","hierarchyMode","allowFiltering","filterSettings","findParentRecords","records","datas","len","Object","keys","getObject","push","getExpandStatus","record","parents","childParent","parentRecord","parentItem","getParentData","uniqueID","initialRender","expandStateMapping","expanded","findChildrenRecords","hasChildRecords","childRecords","concat","isOffline","dm","ready","extendArray","array","obj","objArr","j","getPlainData","value","index","level","taskData","requireFilter","isHidden","el","style","window","getComputedStyle","display","visibility","editAction","details","control","isSelfReference","addRowIndex","selectedIndex","columnName","addRowRecord","batchChanges","action","getPrimaryKeyFieldNames","treeData","json","modifiedData","originalData","isSkip","editSettings","mode","editModule","getBatchChanges","addAct","currentViewRecords","getCurrentViewRecords","extend","newRowPosition","unshift","primaryKeys","currentdata","addAction","Array","k","_loop_1","prototype","hasOwnProperty","call","editedData","parentIdMapping","idMapping","splice","childMapping","updateParentRow","currentData_1","parentData","flatData","filter","e","p","enableImmutableMode","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","child","index_1","currentRecords","map","enableVirtualization","getValue","parentUniqueID","sortSettings","indexOf","data","setRowData","row","getRowByIndex","getRows","getRowIndexByPrimaryKey","movableRow","frozenRows","getFrozenColumns","getMovableRowByIndex","index_2","treeColumnIndex","allowRowDragAndDrop","renderModule","cellRender","cell","cells","column","getColumns","requestType","RowModifier","Column","options","this","allowEditing","edit","disableHtmlEncode","allowReordering","showColumnMenu","allowSorting","allowResizing","merge","setProperties","clipboardModule","uid","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Predicate","_super","apply","Property","ChildProperty","FilterSettings","Collection","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","Grid","Inject","GridLogger","getModuleName","log","types","args","type","item","detailLists","cOp","check","success","message","generateMessage","replace","gridurl","substring","treeGridObj","dataStateChange","console","logType","treeLog","treeGrid","isPrimaryKey","treeGridDetails","mapping_fields_missing","opt","ERROR","rowDataBound","queryCellInfo","beforeDataBound","actionBegin","actionComplete","rowSelected","checkboxChange","rowDeselected","toolbarClick","beforeExcelExport","beforePdfExport","collapsed","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","crudAction","beginEdit","beginAdd","recordDoubleClick","cellSave","cellSaved","cellEdit","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","keyPressed","doubleTap","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","detailDataBound","rowDragStartHelper","rowsAdd","rowsRemove","rowdraging","rowDropped","TreeClipboard","_this","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getSelection","toString","clipBoardTextArea","rows","selectionSettings","selectedIndexes","getSelectedRowIndexes","sort","a","classList","contains","slice","querySelectorAll","uniqueid","getSelectedRecords","copyHierarchyMode","parentContentData","childContentData","headerTextArray","getVisibleColumns","headerText","cancel","trigger","Browser","userAgent","match","setSelectionRange","select","treeLevel","copy","paste","rowIndex","colIndex","destroy","childData","GridClipboard","Selection","selectedItems","filteredList","addEventListener","on","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","removeEventListener","isDestroyed","off","checkBox","checkWrap","parentsUntil","querySelector","closest","selectCheckboxes","triggerChkChangeEvent","nextElementSibling","autoCheckHierarchy","checkBoxvalue","headerSelection","checkState","rowElement","checked","rowData","getCheckedRecords","events.checkboxChange","getCheckboxcolumnIndex","mappingUid","columnIndex","col","headerCelllength","getHeaderContent","getAttribute","headerElement","rowChkBox","createElement","className","attrs","createCheckBox","label","add","insertBefore","cloneNode","firstChild","renderColumnCheckbox","setAttribute","checkboxState","allowTextWrap","width","checkbox","removeClass","container","containerELe","spanEle","innerHTML","divEle","appendChild","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","count","isSummaryRow","indeter","checkChildRecords","checkBoxRecord","checkAll","filterResult","rec","currentRecord","checkedRecord","recordIndex","checkboxRecord","tr","movableTr","getMovableDataRows","checkedIndex","checkBoxclass","childLength","updatedData","forEach","getCheckedrecords","getCheckedRowIndexes","Print","GridPrint","events.printGridInit","printTreeGrid","printGrid","gridElement","events.queryCellInfo","events.rowDataBound","events.beforeDataBound","addClass","print","SearchSettings","SelectionSettings","Render","templateResult","columnTemplateResult","reactTemplateRender","allowPaging","pageSettings","pageSizeMode","enableCollapseAll","proxy_1","parentrec","cellElement","pad","filterLevel","totalIconsWidth","getColumnByUid","summaryRow","frozenColumns","enableColumnVirtualization","getColumnIndexByUid","emptyExpandIcon","styles","n","iconRequired","hasFilteredChildRecords","expandIcon","expand","updateTreeCell","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","field","notify","checkboxElement","parseInt","summaryData","rowTemplate","treeColumn","templateFn","colindex","template","templateCompiler","textContent","appendChildren","children","tempID","element","id","portals","isReact","result","refreshReactColumnTemplateByUid","columnUid","clearTemplate","undefined","rowsObj","getRowsObject","indent","getIndentCount","cellIndex","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","serviceLocator","td","getCellFromIndex","refreshTD","DataManipulation","addedRecords","parentItems","taskIds","hierarchyData","storedIndex","sortedData","isSortAction","dataResults","updateParentRemoteData","beginSorting","updateData","events.remoteExpand","collectExpandingRecs","dataProcessor","isRemote","convertToFlatData","query","Query","filterKey","params","param","where","addParams","hasChildMapping","qry","clone","queries","executeQuery","then","DataUtil","distinct","httpRequest","statusText","setValue","zerothLevelData","dataManagerSuccess","hideSpinner","convertJSONData","tempData","selfData","mappingData","executeLocal","group","groupData","items","selfReferenceUpdate","createRecords","referenceData","shift","loadChildOnDemand","getUid","Math","ceil","random","rowDetails","isChild","gridRows","getContentTable","childRecord","targetEle","getElementsByClassName","getRowObjectFromUID","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","getDataModule","generateQuery","clonequries","fn","showSpinner","currentViewData","inx","haveChild","events.actionComplete","aggregates","gridQuery","aggregateQuery","summaryQuery","q","summaryModule","calculateSummaryValue","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","enableInfiniteScrolling","events.expanded","contentModule","currentInfo","prevInfo","loadNext","currentPage","nextInfo","page","parentRecords","treeGridData","currentData","dataObj","isExport","expresults","exportType","isPrinting","actionArgs","actionData","actionAddArgs","primaryKeyColumnName","dataValue","isLocalData","updateAction","filterQuery","searchQuery","results","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","sortComparer","bind","direction","sortBy","sortArgs","temp","paging","printMode","actArgs","events.pagingActions","isCollapsedStatePersist","actualResults","dataResult","events.crudAction","events.batchSave","ToolbarItem","ContextMenuItems","PageSettings","AggregateColumn","intl","Internationalization","setFormatter","cultureName","format","skeleton","formatFn","getFormatFunction","getDateFormat","getNumberFormat","getFormatter","setTemplate","helper","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","indentOutdentAction","modifiedRecords","stackedHeader","objectEqualityChecker","old","current","isEqual","excludeKeys","Date","getTime","TreeGrid_1","TreeGridSelection","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","preRender","TreeGridLocale","initProperties","defaultLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","l10n","L10n","locale","sortByColumn","isMultiSort","sortModule","sortColumn","clearSorting","removeSortColumn","search","searchString","autoFitColumns","fieldNames","resizeModule","updateColumnModel","reorderColumns","fromFName","toFName","localeObject","gridLocale","treeGridLocale","load","printModule","treeGridkeyActionHandler","allowKeyboard","parentTarget","summaryElement","expandAll","collapseAll","expandCollapseRequest","parentElement","findnextRowElement","selectRow","row_1","clearSelection","findPreviousRowElement","rIndex","cIndex","summaryRowElement","previousElementSibling","columnModel","isExpandAll","isCollapseAll","keyConfigs","ctrlDownArrow","ctrlUpArrow","ctrlShiftUpArrow","ctrlShiftDownArrow","downArrow","upArrow","offline","RemoteSaveAdaptor","wireEvents","EventHandler","mouseClickHandler","keyboardModule","KeyboardEvents","keyAction","eventName","tabIndex","requiredModules","modules","getGridColumns","member","toolbar","contextMenuItems","allowExcelExport","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","IsRowDDInjected","name","isIndentEnabled","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","refreshToolbarItems","renderComplete","destroyTemplateFn","toolbarElement","toolbarModule","getToolbar","indentID","outdentID","indentElement","outdentElement","afterGridRender","griddata","bindGridProperties","bindedDataSource","enableRtl","columnQueryMode","getActualProperties","pagerTemplate","infiniteScrollSettings","enableAltRow","enableHover","enableAutoFill","enableAdaptiveUI","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","triggerEvents","bindGridEvents","rowSelecting","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","events.rowSelected","events.rowDeselected","resizeStop","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","rowDeselecting","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","resizeStart","resizing","columnDrag","columnDragStart","columnDrop","beforePrint","beforeCopy","beforePaste","TreeLogger","printComplete","actionFailure","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","dataBound","updateRowTemplate","updateAltRow","req","totalRows","persistSelection","callBackPromise_1","Deferred","beforeDataBoundArgs","resolve","callBackPromise","events.toolbarClick","toolbarargs","cellSelecting","cellselectingArgs","events.beginEdit","begineditArgs","isExpandRefresh","events.dataStateChange","isContextMenuOpen","contextitems","contextMenuModule","contextMenu","events.cellSave","cellsaveArgs","events.cellSaved","promise","events.cellEdit","events.batchAdd","events.beforeBatchSave","events.beforeBatchAdd","events.batchDelete","events.beforeBatchDelete","events.batchCancel","treeColumnRowTemplate","datacount","defaultQuery","JsonAdaptor","dataManager","isQueryInvokedFromData","callBackPromise_2","events.actionBegin","updateTreeGridModel","events.beginAdd","ag","showChildSummary","refresh","selectedItem_1","selectedRecords","dropIndex","dropPosition","selectedRows","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","events.rowdraging","rowDrop","events.rowDropped","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","tooltipText","Search","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","treeColumnTextAlign","textAlign","treeColumnField","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","updateTreeColumnTextAlign","closeEdit","getColumnByField","treeGridElement","hasTreeGridChild","removeListener","dataBind","document","getElementById","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","position","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","visibleRecords","getVisibleRecords","sHeight","scrollHeight","clientHeight","getContent","goToPage","pageNo","pagerModule","updateExternalMessage","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","updateExpandStateMapping","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollTop","getRowHeight","scrollBy","state","totalRecords","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","this_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","startIndex","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","events.localPagedExpandCollapse","deff","data_1","length_1","rows_1","args_1","collapseRemoteChild","movableRows","freezeRightRows","rows_2","getMovableRows","getFrozenRightRows","visibleRowCount","gridRow","rcell","arg","movablerows","rightrows","collapsingTd","collapse","expandElement","cRow","eRows","i_1","updateRowAndCellElements","updateResultModel","returnResult","filterByColumn","filterOperator","filterValue","predicate","matchCase","ignoreAccent","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","getSelectedRows","getMovableCellFromIndex","getFrozenRightRowByIndex","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","cnt","isFrozen","getSelectedRowCellIndexes","baseModule","treeModule","reorderRows","fromIndexes","toIndex","rowDragAndDropModule","outdent","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","hasDropItem","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropRows","orderToIndex","dropData","totalRecord","parentrow","request","selectedItemIndex","selectedItem","selectedRow","selectedRecord","record_1","eventTrigger","updatedParent","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","removeLastrowBorder","isEmptyRow","islastRowIndex","updateIcon","rowEle","rowPositionHeight","addErrorElem","rowTop","toolHeight","offsetHeight","positionOffSet","getOffset","contentHeight","top","offsetTop","divide","topRowSegment","middleRowSegment","bottomRowSegment","mouseEvent","touchEvent","posy","pageY","changedTouches","isTopSegment","isMiddleRowSegment","isBottomRowSegment","removeChildBorder","removetopOrBottomBorder","addFirstrowBorder","removeErrorElem","topOrBottomBorder","addRemoveClasses","addLastRowborder","borderElem","targetRow","node","div","gridheaderEle","toolbarHeight","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","content","parentNode","removeChild","spanContent","paddingLeft","dropItemSpan","dropItemLeft","left","spanLeft","errorelem","errorValue","setStyleAttribute","border","box","getBoundingClientRect","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","updateModifiedRecords","i_2","i_3","draggedRecords","TreeVirtualRowModelGenerator","events.dataListener","getDatas","visualData","getDataInfo","getData","generateRows","virtualInfo","info","blockIndexes","getBlockIndexes","url","checkAndResetCache","clear","cache","groups","getBlockSize","VirtualRowModelGenerator","Filter","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parent_1","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","childRec","isExist","parent_2","parent_3","fLevel","ExcelExport","GridExcel","updateExcelResultModel","exportRowDataBound","finalPageSetup","isCsv","Promise","isLocal","event.beforeExcelExport","customData","manipulateExportProperties","book","dtSrc","queryResult","flatsData","dataSrc","excelRow","excelrowobj","rowObj","filtercolumnlength","rowlength","excelRows","rowlevel","Boolean","expandedStatus","sublevelState","grouping","outlineLevel","isCollapsed","worksheets","pageSetup","isSummaryRowBelow","PdfExport","GridPdf","updatePdfResultModel","event.beforePdfExport","customsData","manipulatePdfProperties","flatDatas","paragraphIndent","Page","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","ret","pageRoot","pagedResults","newResults","t","res","pageingDetails","propname","skip","size","pageSize","take","dm_1","or","parents_1","floor","Toolbar","tool","refreshToolbar","toolbarClickHandler","indentEle","outdentEle","selectedrow","isCheckBoxSelection","Aggregate","GridAggregate","flatChildRecords","isSort","flatRecords","summaryLength","dataLength","getChildRecordsLength","summaryRowIndex","len_1","createSummaryItem","idx_1","currentIndex","summaryParent","length_2","itemData","summary","displayColumn","keys_1","getSummaryValues","summaryColumn","single","getFormatFromType","tempObj","requiresCount","summaryKey","sumData","toLowerCase","calculateAggregate","disp","value_1","summaryformat","Sort","GridSort","flatSortedData","updateModel","createdSortedRecords","sortParams","iterateSort","childSort","ColumnMenu","GridColumnMenu","getColumnMenu","columnMenuModule","ContextMenu","cmenu","addRow","editRecord","BatchEdit","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","isAdd","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","actualCellIndex","frozenCols","columnObject","getColumnByIndex","added","primaryKey_1","currentDataIndex","indexvalue","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","changes","batchIndex","primaryParent","childRecordCount","updateChildCount","updateRowIndex","focusModule","table","matrix","childs","primarykey","parentRowIndex","getRowElementByUID","totalCount","mRows","deleterecords","deleteUniqueID","positionIndex","updatedRecords","primarykey_1","addRecords","endIndex","indexValue","Edit","prevAriaRowIndex","isAddedRowByMethod","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","events.keyPressed","lastCellTab","contentready","editActionEvents","events.doubleTap","gridDblClick","customCellSave","savePreviousRowPosition","events.beforeStartEdit","events.beforeBatchCancel","resetIsOnBatch","getRowPosition","doubleClickTarget","addArgs","ariaRowIndex","applyFormValidation","eventArgs","treeObj","keyData","paramsLength","infiniteAddAction","rowObjects","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","getMovableRowsObject","isCache","enableCache","resetRowIndex","updateIndex","newRowIndex","dataIndex","infiniteCurrentViewData","infiniteScrollModule","isOnBatch","updateGridEditMode","keyPress","prom","celleditArgs","toolbarID","cellDetails","treeCell","afterCellSave","form","rowIndex_1","primaryKeys_1","isTabLastRow","update","fromTable","previousValue","editArgs","filterChoiceCount","excelSearchOperator","mRow","aggregateModule","destroyWidgets","formObj","restoreFocus","saveArgs","previousData","data1","treeColIndex","l","data2","treecell","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","focussedElement","activeElement","newFreezeRowObject","rightFrozenRows","errors","focus","seletedRow","beginAddEdit","primaryKeys_2","selector","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","editFormValidate","destroyForm","CommandColumn","Command","DetailRow","detailrow","dataBoundArg","detaildataBound","setIndentVisibility","childRowExpand","rowExpandCollapse","actioncomplete","detailele","elements","detailData","detailRowElement","detailElement","previousSibling","expandClass","classlist","gridClas","gridclass","newNo","detailClass","spann","updtdcolum","focusElement","VirtualTreeContentRenderer","locator","isExpandCollapse","translateY","maxiPage","recordAdded","preTranslate","isRemoteExpand","getModelGenerator","events.virtualActionArgs","virtualOtherAction","events.indexModifier","setTop","nextSetResIndex","lastIndex","onDataReady","refreshContentRows","observers","observes","scrollArgs","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","onActionComplete","virtualEditSuccess","resetIseditValue","cancelEdit","toSelectRowOnContextOpen","refreshCell","cellFocus","setVirtualHeight","contents","debounceEvent","TreeInterSectionObserver","getPanel","getTranslateY","sTop","cHeight","isOnenter","initialRowTop","gridTop","containerRect","observer","generateCells","generateCell","rowId","cellType","colSpan","oIndex","foreignKeyData","isDataCell","isTemplate","rowID","Data","isForeignKey","isForeignColumn","Cell","rowPosition","withInRange","restoreEditState","restoreNewRow","isWheel","isIE","xAxis","axis","getColumnOffset","vgenerator","getColumnIndexes","columnIndexes","cOffsets","maxLeft","virtualEle","adjustTable","header","sentinel","outBuffer","upScroll","offset","downScroll","vHeight","lastInx","remains","rowPt","firsttdinx","isLastBlock","viewInfo","previousInfo","setColumnIndexesInView","loadSelf","event","appendContent","newChild","sentinelInfo","cBlock","cOffset","setWrapperWidth","getTable","VirtualContentRenderer","isWheeling","newPos","lastPos","timer","callback","onEnterCallback","virtualScrollHandlers","delay","debounced50","debounce","prevTop","prevLeft","movableContainer","scrollbar","delta","clearTimeout","setTimeout","preventDefault","returnValue","axes","entered","InterSectionObserver","VirtualScroll","prevstartIndex","prevendIndex","TreeVirtual","returnVisualData","collapseExpandVirtualchilds","virtualPageAction","expandCollapseRec","counts","resourceCount","sIndex","instantiateRenderers","parentGrid","renderer","getService","RenderType","Header","VirtualHeaderRenderer","Content","ensurePageSize","GridVirtualScroll","Freeze","FreezeColumn","dblClickHandler","frozenRightRows","frozenrows","rData","queryselector","freezeModule","ColumnChooser","GridColumnChooser","X","Y","InfiniteScroll","GridInfiniteScroll","infinitePageAction","infiniteRemoteExpand","infiniteDeleteHandler","infiniteEditHandler","createRows","collapseExpandInfinitechilds","rowRenderer","RowRenderer","childRowObjects","childRowElements","infiniteParents","initialBlocks","maxBlocks","firstIndex","rowElms","keyField","removeRows","mRowElms","tbody","currentRows","isMovable","isFrozenRight","isFrozenGrid","getMovableVirtualContent","getFrozenVirtualContent","isFrozenRows","getMovableVirtualHeader","getFrozenVirtualHeader","newRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-treegrid.umd.min.js","sources":["../src/treegrid/utils.js","../src/treegrid/actions/crud-actions.js","../src/treegrid/models/column.js","../src/treegrid/models/loading-indicator.js","../src/treegrid/models/filter-settings.js","../src/treegrid/models/textwrap-settings.js","../src/treegrid/actions/logger.js","../src/treegrid/base/constant.js","../src/treegrid/actions/clipboard.js","../src/treegrid/actions/selection.js","../src/treegrid/actions/print.js","../src/treegrid/models/search-settings.js","../src/treegrid/models/selection-settings.js","../src/treegrid/renderer/render.js","../src/treegrid/base/data.js","../src/treegrid/enum.js","../src/treegrid/models/page-settings.js","../src/treegrid/models/summary.js","../src/treegrid/models/edit-settings.js","../src/treegrid/models/sort-settings.js","../src/treegrid/models/infinite-scroll-settings.js","../src/treegrid/base/treegrid.js","../src/treegrid/actions/reorder.js","../src/treegrid/actions/resize.js","../src/treegrid/actions/rowdragdrop.js","../src/treegrid/models/rowdrop-settings.js","../src/treegrid/renderer/virtual-row-model-generator.js","../src/treegrid/actions/filter.js","../src/treegrid/actions/excel-export.js","../src/treegrid/actions/pdf-export.js","../src/treegrid/actions/page.js","../src/treegrid/actions/toolbar.js","../src/treegrid/actions/summary.js","../src/treegrid/actions/sort.js","../src/treegrid/actions/column-menu.js","../src/treegrid/actions/context-menu.js","../src/treegrid/actions/batch-edit.js","../src/treegrid/actions/edit.js","../src/treegrid/actions/command-column.js","../src/treegrid/actions/detail-row.js","../src/treegrid/renderer/virtual-tree-content-render.js","../src/treegrid/actions/virtual-scroll.js","../src/treegrid/renderer/virtual-tree-freeze-render.js","../src/treegrid/actions/freeze-column.js","../src/treegrid/actions/column-chooser.js","../src/treegrid/actions/infinite-scroll.js"],"sourcesContent":["import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[parseInt(i.toString(), 10)].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[parseInt(i.toString(), 10)]);\n if (hasChild) {\n datas.push(records[parseInt(i.toString(), 10)]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords.filter(function (item) { return !item.isSummaryRow; });\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[parseInt(i.toString(), 10)]);\n if (childRecords[parseInt(i.toString(), 10)].hasChildRecords ||\n (!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) &&\n childRecords[parseInt(i.toString(), 10)].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[parseInt(i.toString(), 10)]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[parseInt(i.toString(), 10)]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[parseInt(j.toString(), 10)]] = array[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[\"\" + idFilter][\"\" + value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[\"\" + id][\"\" + value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[\"\" + addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[parseInt(k.toString(), 10)][\"\" + key]) === 'object') {\n modifiedData[parseInt(k.toString(), 10)] = modifiedData[parseInt(k.toString(), 10)][\"\" + key];\n }\n var keys = modifiedData[parseInt(k.toString(), 10)].taskData ?\n Object.keys(modifiedData[parseInt(k.toString(), 10)].taskData) :\n Object.keys(modifiedData[parseInt(k.toString(), 10)]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[parseInt(i.toString(), 10)][\"\" + key] === modifiedData[parseInt(k.toString(), 10)][\"\" + key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[parseInt(i.toString(), 10)];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[\"\" + control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[\"\" + control.idMapping] === currentData_1[\"\" + control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[\"\" + control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[parseInt(p.toString(), 10)][\"\" + control.idMapping] === currentData_1[\"\" + control.idMapping]) {\n if (!control.enableImmutableMode && parentData.childRecords.length === parentData['Children'].length) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], keys[parseInt(j.toString(), 10)]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[\"\" + changedRecords].length === 0))\n || keys[parseInt(j.toString(), 10)] === columnName)) {\n var editedData = getParentData(control, modifiedData[parseInt(k.toString(), 10)].uniqueID);\n treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]] =\n modifiedData[parseInt(k.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[parseInt(j.toString(), 10)]] = editedData[keys[parseInt(j.toString(), 10)]]\n = treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[\"\" + control.parentIdMapping] = treeData[parseInt(i.toString(), 10)][\"\" + control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], control.childMapping)) {\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping] = [];\n }\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping])) {\n if (removeChildRecords(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping], modifiedData[parseInt(k.toString(), 10)], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[parseInt(addRowIndex.toString(), 10)];\n if (!isNullOrUndefined(currentdata) && currentdata[\"\" + primaryKeys] === details.value[\"\" + primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[\"\" + internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[parseInt(j.toString(), 10)][\"\" + key] === modifiedData[\"\" + key] ||\n (isSelfReference && childRecords[parseInt(j.toString(), 10)][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], keys[parseInt(i.toString(), 10)]) &&\n (control.editSettings.mode !== 'Cell' || keys[parseInt(i.toString(), 10)] === columnName)) {\n editedData[keys[parseInt(i.toString(), 10)]] =\n editedData.taskData[keys[parseInt(i.toString(), 10)]] =\n childRecords[parseInt(j.toString(), 10)][keys[parseInt(i.toString(), 10)]] =\n modifiedData[keys[parseInt(i.toString(), 10)]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[\"\" + editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[\"\" + editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[\"\" + control.parentIdMapping] = childRecords[parseInt(j.toString(), 10)][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], control.childMapping)) {\n childRecords[parseInt(j.toString(), 10)][control.childMapping] = [];\n }\n childRecords[parseInt(j.toString(), 10)][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[parseInt(j.toString(), 10)][control.childMapping])) {\n if (removeChildRecords(childRecords[parseInt(j.toString(), 10)][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[\"\" + key] === record[\"\" + key]) {\n index_1 = i;\n return;\n } });\n if (control.enableVirtualization && isNullOrUndefined(index_1)) {\n var updatedParent = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n record = updatedParent;\n }\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[parseInt(index_1.toString(), 10)];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[\"\" + control.childMapping].indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[parseInt(i.toString(), 10)][\"\" + primaryKeys] === record[\"\" + primaryKeys]) {\n data[parseInt(i.toString(), 10)] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[\"\" + key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[parseInt(index_2.toString(), 10)] ? row.cells[parseInt(index_2.toString(), 10)]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\n }\n }\n }\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[parseInt(i.toString(), 10)] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[\"\" + refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Loading Indicator of the Tree Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\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 { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[parseInt(i.toString(), 10)] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[parseInt(i.toString(), 10)] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[parseInt(i.toString(), 10)] === 'primary_column_missing' || type[parseInt(i.toString(), 10)] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[parseInt(i.toString(), 10)] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[parseInt(i.toString(), 10)] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[parseInt(i.toString(), 10)] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[parseInt(i.toString(), 10)] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[parseInt(i.toString(), 10)] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\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})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent, serviceLocator) {\n var _this = _super.call(this, parent.grid, serviceLocator) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n _this.serviceLocator = serviceLocator;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[\"\" + copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[parseInt(i.toString(), 10)]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[parseInt(i.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader, i);\n }\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[\"\" + copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] =\n this.treeGridParent.getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this[\"\" + getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this[\"\" + copyContent] = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this[\"\" + isSelect] = true;\n this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem])) {\n var treeLevel = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem]) &&\n currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[parseInt(selectedIndex.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[\"\" + copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + hasChildRecords]) {\n var childData = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) && currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) {\n if ((!isNullOrUndefined(rows[parseInt(j.toString(), 10)])) && !rows[parseInt(j.toString(), 10)].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[\"\" + copyContent]);\n this[\"\" + copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.searchingRecords = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = 'stackedHeader';\n var columnModel = 'columnModel';\n var columns = this.parent[\"\" + stackedHeader] ? this.parent[\"\" + columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[parseInt(col.toString(), 10)].showCheckbox) {\n mappingUid = columns[parseInt(col.toString(), 10)].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[parseInt(j.toString(), 10)];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox', 'aria-label': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[parseInt(i.toString(), 10)]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[parseInt(j.toString(), 10)])) {\n flatRecord[keys[parseInt(j.toString(), 10)]] = record[keys[parseInt(j.toString(), 10)]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[parseInt(count.toString(), 10)].isSummaryRow) {\n if (childRecords[parseInt(count.toString(), 10)].hasChildRecords) {\n this.traverSelection(childRecords[parseInt(count.toString(), 10)], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[parseInt(count.toString(), 10)], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[parseInt(i.toString(), 10)].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && (!record.hasFilteredChildRecords || isNullOrUndefined(record.hasFilteredChildRecords)) && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check') {\n record.checkboxState = 'check';\n }\n else if ((checkChildRecords === 0 && indeter === 0) || (checkChildRecords === 0 && record.hasFilteredChildRecords && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check')) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n //This property used to maintain the check state of the currentview data after clear filtering\n var multiFilterCheckState = false;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n if (this.parent.grid.searchSettings.key.length) {\n this.searchingRecords = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n multiFilterCheckState = true;\n }\n else {\n multiFilterCheckState = false;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length && !this.parent.grid.searchSettings.key.length) {\n this.filteredList = [];\n }\n if (this.searchingRecords.length && !isNullOrUndefined(checkAll)) {\n this.filteredList = this.searchingRecords;\n }\n }\n var data;\n if (!(isNullOrUndefined(this.parent.filterModule)) &&\n this.parent.filterModule.filteredResult.length === 0 && this.parent.getCurrentViewRecords().length === 0 &&\n this.parent.filterSettings.columns.length > 0) {\n data = this.filteredList;\n }\n else {\n data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList : this.parent.flatData;\n }\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[parseInt(i.toString(), 10)].checkboxState === 'check') {\n continue;\n }\n if (multiFilterCheckState) {\n continue;\n }\n data[parseInt(i.toString(), 10)].checkboxState = 'check';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[parseInt(i.toString(), 10)]);\n if (index > -1) {\n data[parseInt(i.toString(), 10)].checkboxState = 'uncheck';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.getCurrentViewRecords().indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var tr = this.parent.getRows()[parseInt(recordIndex.toString(), 10)];\n var checkbox;\n if (recordIndex > -1) {\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[parseInt(recordIndex.toString(), 10)];\n }\n checkbox = tr.querySelectorAll('.e-frame')[0] ? tr.querySelectorAll('.e-frame')[0]\n : movableTr.querySelectorAll('.e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && this.parent.enableVirtualization && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n var chkstate = checkState === 'check' ? 'checked' : checkState === 'uncheck' ? 'unchecked' : 'mixed';\n tr.querySelector('.e-treecheckselect').setAttribute('aria-checked', checkState === 'check' ? 'true' : checkState === 'uncheck' ? 'false' : 'mixed');\n tr.querySelector('.e-frame').setAttribute('title', 'checkbox' + chkstate);\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[parseInt(i.toString(), 10)], childData[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[parseInt(i.toString(), 10)]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[parseInt(i.toString(), 10)], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[parseInt(i.toString(), 10)].parentItem)) {\n this.updateParentSelection(updatedData[parseInt(i.toString(), 10)].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.getCurrentViewRecords() : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords && record.childRecords.length > 0) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[parseInt(i.toString(), 10)].hasChildRecords) {\n _this.updateParentSelection(child[parseInt(i.toString(), 10)]);\n }\n else if (!(child[parseInt(i.toString(), 10)].hasChildRecords) &&\n !isNullOrUndefined(child[parseInt(i.toString(), 10)])) {\n _this.updateSelectedItems(child[parseInt(i.toString(), 10)], child[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed) {\n args.row.style.display = 'none';\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0 && !parentrec[0].isSummaryRow) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (<ITreeData>args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[\"\" + getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n iconRequired = !(data.childRecords.length === 0);\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n args.cell.setAttribute('aria-expanded', data.expanded ? 'true' : 'false');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '7px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n if (args.column.template) {\n args.cell.innerHTML = null;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('data-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n args.column.template = treeColumn.template;\n args.column[\"\" + templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[\"\" + templateFn](args.data, this.parent, 'columnTemplate', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[\"\" + portals])) {\n this.parent.grid[\"\" + portals] = this.parent[\"\" + portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n this.parent[\"\" + renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[\"\" + templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[\"\" + str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[\"\" + templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[parseInt(j.toString(), 10)].isDataRow && !isNullOrUndefined(rowsObj[parseInt(j.toString(), 10)].index)) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[parseInt(j.toString(), 10)].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[parseInt(j.toString(), 10)].data, { index: rowsObj[parseInt(j.toString(), 10)][\"\" + rowIdx] });\n var treecell = _this.parent.getRows()[parseInt(j.toString(), 10)]\n .cells[parseInt(cellIndex.toString(), 10)];\n _this.cellRender({ data: rowsObj[parseInt(j.toString(), 10)].data, cell: treecell, column: cell.column });\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[\"\" + portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n this.parent[\"\" + renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = <DataManager>this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[parseInt(i.toString(), 10)];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[parseInt(i.toString(), 10)];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[parseInt(index.toString(), 10)][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[\"\" + isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var actionArgs = 'actionArgs';\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && args[\"\" + actionArgs].requestType === 'virtualscroll') {\n this.parent.hideSpinner();\n }\n var records = args.result;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && (args[\"\" + actionArgs].requestType === 'virtualscroll' || args[\"\" + actionArgs].action === 'clearFilter' || args[\"\" + actionArgs].searchString === '')) {\n this.parent.query.expands = [];\n }\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n var _loop_1 = function (rec) {\n if (isCountRequired(this_1.parent) && records[parseInt(rec.toString(), 10)].hasChildRecords &&\n this_1.parent.initialRender) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization) {\n var childRecords_1 = [];\n var parent_1 = this_1.parent;\n records.filter(function (e) {\n if (e[\"\" + parent_1.parentIdMapping] === records[parseInt(rec.toString(), 10)][\"\" + parent_1.idMapping]) {\n childRecords_1.push(e);\n }\n });\n if (childRecords_1.length) {\n records[parseInt(rec.toString(), 10)].expanded = true;\n }\n else if (records[parseInt(rec.toString(), 10)].hasChildRecords) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n }\n if (isNullOrUndefined(records[parseInt(rec.toString(), 10)].index)) {\n records[parseInt(rec.toString(), 10)].taskData = extend({}, records[parseInt(rec.toString(), 10)]);\n records[parseInt(rec.toString(), 10)].uniqueID = getUid(this_1.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[parseInt(rec.toString(), 10)].uniqueID, records[parseInt(rec.toString(), 10)], this_1.parent);\n records[parseInt(rec.toString(), 10)].level = 0;\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization && records[parseInt(rec.toString(), 10)][\"\" + this_1.parent.parentIdMapping] && records[parseInt(rec.toString(), 10)].level === 0) {\n records[parseInt(rec.toString(), 10)].level = records[parseInt(rec.toString(), 10)].level + 1;\n }\n records[parseInt(rec.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n if ((records[parseInt(rec.toString(), 10)][this_1.parent.hasChildMapping] ||\n this_1.parentItems.indexOf(records[parseInt(rec.toString(), 10)][this_1.parent.idMapping]) !== -1)) {\n records[parseInt(rec.toString(), 10)].hasChildRecords = true;\n }\n records[parseInt(rec.toString(), 10)].checkboxState = 'uncheck';\n }\n };\n var this_1 = this;\n for (var rec = 0; rec < records.length; rec++) {\n _loop_1(rec);\n }\n }\n else {\n var dataResults = 'dataResults';\n var expandRecord = 'expandRecord';\n if (!isNullOrUndefined(records) && !((this.parent.loadChildOnDemand) && isCountRequired(this.parent) && !isNullOrUndefined(this.parent[\"\" + dataResults][\"\" + expandRecord])) &&\n !(isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization)) {\n this.convertToFlatData(records);\n }\n }\n }\n if (isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization) {\n args.result = records;\n }\n else if (isRemoteData(this.parent) && this.parent.enableVirtualization && !this.parent.loadChildOnDemand) {\n args.result = records;\n }\n else {\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n }\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && this.parent.loadChildOnDemand\n && this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var query = 'query';\n var summaryQuery = args[\"\" + query].queries.filter(function (q) { return q.fn === 'onAggregates'; });\n args.result = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n var name = 'name';\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[parseInt(i.toString(), 10)].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[parseInt(i.toString(), 10)].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ?\n this.parent.grid.getCurrentViewRecords()[rowDetails.rows[parseInt(i.toString(), 10)].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ action: rowDetails[\"\" + name], record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n if (this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n qry.take(this.parent.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('ExpandingAction', rowDetails.record[this.parent.idMapping]);\n qry.expand(expandDetail);\n }\n else if (this.parent.enableVirtualization && rowDetails.action === 'collapse') {\n qry.take(this.parent.grid.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('CollapsingAction', rowDetails.record[this.parent.idMapping]);\n qry.expand(expandDetail);\n }\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var remoteExpandedData = 'remoteExpandedData';\n var remoteCollapsedData = 'remoteCollapsedData';\n var level = 'level';\n var datas = _this.parent.grid.currentViewData.slice();\n var inx = datas.indexOf(rowDetails.record);\n if (_this.parent.enableVirtualization && (rowDetails.action === 'collapse' || rowDetails.action === 'remoteExpand')) {\n datas = [];\n for (var i = 0; i < inx; i++) {\n datas.push(_this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n rowDetails.record.childRecords = result;\n for (var r = 0; r < result.length; r++) {\n if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'remoteExpand') {\n _this.parent[\"\" + remoteExpandedData].push(rowDetails.record);\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'collapse') {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteExpandedData].splice(i, 1);\n }\n }\n }\n result[parseInt(r.toString(), 10)].taskData = extend({}, result[parseInt(r.toString(), 10)]);\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] && _this.parent.enableVirtualization && _this.parent[\"\" + remoteExpandedData].length) {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + level] + 1;\n var parentData = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)];\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n }\n else if (_this.parent.enableVirtualization) {\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n if (isNullOrUndefined(result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping])) {\n result[parseInt(r.toString(), 10)].level = 0;\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level;\n }\n }\n else {\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level + 1;\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n result[parseInt(r.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n result[parseInt(r.toString(), 10)].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[parseInt(r.toString(), 10)].checkboxState = 'uncheck';\n if (_this.parent.enableVirtualization && isNullOrUndefined(result[parseInt(r.toString(), 10)].level)) {\n for (var p = 0; p < _this.parent.grid.currentViewData.length; p++) {\n if (_this.parent.grid.currentViewData[parseInt(p.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent.grid.currentViewData[parseInt(p.toString(), 10)]['level'] + 1;\n }\n }\n }\n setValue('uniqueIDCollection.' + result[parseInt(r.toString(), 10)].uniqueID, result[parseInt(r.toString(), 10)], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n result[parseInt(r.toString(), 10)].hasChildRecords = true;\n if (_this.parent.enableVirtualization && _this.parent.loadChildOnDemand) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)]['expanded'];\n }\n }\n if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] !== rowDetails.record[\"\" + _this.parent.idMapping] && result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = false;\n _this.parent[\"\" + remoteCollapsedData].push(rowDetails.record);\n }\n else if (rowDetails.action === 'remoteExpand') {\n for (var i = 0; i < _this.parent.grid.currentViewData.length; i++) {\n if (_this.parent.grid.currentViewData[parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result.splice(r, 1, _this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (result[parseInt(r.toString(), 10)][_this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteCollapsedData].splice(i, 1);\n }\n }\n }\n if (result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n }\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action !== 'collapse') {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (!(_this.parent.enableVirtualization && _this.parent.loadChildOnDemand)) {\n result[parseInt(r.toString(), 10)].expanded = false;\n }\n }\n datas.splice(inx + r + 1, 0, result[parseInt(r.toString(), 10)]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[\"\" + result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[\"\" + result_1], true);\n }\n }\n if (_this.parent.enableVirtualization) {\n _this.parent.grid.pageSettings.totalRecordsCount = e.count;\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization) {\n var index = this.parent.query.queries.indexOf(this.parent.query.queries.filter(function (q) { return q.fn === 'onSortBy'; })[0]);\n if (index !== -1) {\n this.parent.query.queries.splice(index, 1);\n }\n if (this.parent.grid.sortSettings.columns.length === 0) {\n this.parent.query.sortBy(null, null);\n }\n }\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n var keys = Object.keys(data);\n for (var i = 0, len = keys.length; i < len; i++) {\n var currentData = extend({}, data[parseInt(i.toString(), 10)]);\n currentData.taskData = data[parseInt(i.toString(), 10)];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if ((!isNullOrUndefined(currentData[this.parent.childMapping]) && !isCountRequired(this.parent)) ||\n ((currentData[this.parent.hasChildMapping]) && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n var remoteCollapsedData = 'remoteCollapsedData';\n if (this.parent.enableVirtualization && this.parent.loadChildOnDemand && isRemoteData(this.parent)\n && !this.parent.initialRender) {\n if (!currentData.hasChildRecords && isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping])) {\n currentData.hasChildRecords = true;\n for (var c = 0; c < this.parent[\"\" + remoteCollapsedData].length; c++) {\n if (this.parent[\"\" + remoteCollapsedData][parseInt(c.toString(), 10)][\"\" + this.parent.idMapping] === currentData[\"\" + this.parent.idMapping]) {\n currentData.expanded = false;\n }\n }\n }\n else if (currentData.level === 0 && isNullOrUndefined(parentRecords) && !currentData.hasChildRecords) {\n currentData.level = currentData.level + 1;\n }\n if (currentData[\"\" + this.parent.hasChildMapping] && !isNullOrUndefined(currentData[\"\" + this.parent.expandStateMapping])) {\n currentData.expanded = currentData[\"\" + this.parent.expandStateMapping];\n currentData.hasChildRecords = true;\n }\n this.parent.flatData.push(currentData);\n }\n else if (isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n this.parent['infiniteScrollData'].push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[\"\" + primaryKeyColumnName])) {\n actionAddArgs.data[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n dataValue.taskData[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[\"\" + getColumnByField](this.parent.grid.\n sortSettings.columns[parseInt(srt.toString(), 10)].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&\n this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n modifiedData.splice(dragdIndex, 1);\n var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[\"\" + isPdfExport] && (isNullOrUndefined(args[\"\" + isCollapsedStatePersist])\n || args[\"\" + isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[parseInt(i.toString(), 10)], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[parseInt(i.toString(), 10)]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n ContextMenuItems[ContextMenuItems[\"RowIndent\"] = 16] = \"RowIndent\";\n ContextMenuItems[ContextMenuItems[\"RowOutdent\"] = 17] = \"RowOutdent\";\n})(ContextMenuItems || (ContextMenuItems = {}));\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\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 { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\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 { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\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 { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\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, addClass, createElement, EventHandler, isNullOrUndefined, extend, merge } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { LoadingIndicator } from '../models/loading-indicator';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\nimport * as literals from '../base/constant';\n/**\n * Represents the TreeGrid component.\n * ```html\n * <div id='treegrid'></div>\n * <script>\n * var treegridObj = new TreeGrid({ allowPaging: true });\n * treegridObj.appendTo('#treegrid');\n * </script>\n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== current[keys[parseInt(i.toString(), 10)]] &&\n excludeKeys.indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date &&\n current[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]].getTime() !==\n current[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[\"\" + logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n TreeGrid.prototype.sortByColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Searches TreeGrid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridexpand')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridcollapse')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var rowIndex = summaryElement.rowIndex;\n this.selectRow(rowIndex);\n var cellIndex = e.target.cellIndex;\n var row_1 = summaryElement.children[parseInt(cellIndex.toString(), 10)];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var rIndex = summaryElement.rowIndex;\n this.selectRow(rIndex);\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[parseInt(cIndex.toString(), 10)];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.infiniteScrollData = [];\n this.remoteCollapsedData = [];\n this.remoteExpandedData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[\"\" + splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n var freezePresent = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'freeze';\n });\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount() || freezePresent.length) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'rowDragAndDrop';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[parseInt(i.toString(), 10)].member === 'virtualscroll') {\n modules[parseInt(i.toString(), 10)].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[\"\" + root] = this[\"\" + root] ? this[\"\" + root] : this;\n this.grid.appendTo(gridContainer);\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[\"\" + destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[\"\" + destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[\"\" + portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this, this.grid.serviceLocator);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.enableVirtualMaskRow = this.enableVirtualMaskRow;\n this.grid.loadingIndicator = this.loadingIndicator;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[\"\" + templateInstance] = this[\"\" + templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[\"\" + isJsComponent] = true;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.IsExpandCollapseClicked = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))\n && (!isNullOrUndefined(args.data) && args.data['hasChildRecords'])) {\n args.cancel = true;\n return;\n }\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowDeselecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowDeselecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[parseInt(i.toString(), 10)].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(i.toString(), 10)], _this.getCurrentViewRecords()[parseInt(i.toString(), 10)].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n if (!isNullOrUndefined(args.data)) {\n _this.notify(events.rowDeselected, args);\n }\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[\"\" + rowIndex]].classList.contains('e-summaryrow')) {\n args[\"\" + rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[\"\" + loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = getObject('dataSource.requests', _this).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n if (totalRows[parseInt(i.toString(), 10)].nextElementSibling) {\n _this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], true);\n }\n break;\n }\n }\n }\n var action = 'action';\n if (_this.enableVirtualization && _this.selectionSettings.persistSelection && (_this.dataResults[\"\" + action] === 'expand' || _this.dataResults[\"\" + action] === 'collapse')) {\n var refreshPersistSelection = 'refreshPersistSelection';\n _this.grid.selectionModule[\"\" + refreshPersistSelection]();\n if (_this.grid.selectionSettings.type === 'Single') {\n var updateRowSelection = 'updateRowSelection';\n var index = _this.getCurrentViewRecords().indexOf(_this.grid.selectionModule['data']);\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(index.toString(), 10)], index);\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[\"\" + dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n if (args.action.requestType !== 'infiniteScroll') {\n _this.infiniteScrollData = [];\n }\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[\"\" + prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n this.treeColumnRowTemplate();\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[\"\" + dataSource].json = extendArray(this.dataSource[\"\" + dataSource].json);\n this.grid.dataSource[\"\" + ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[\"\" + ready])) {\n this.grid.dataSource[\"\" + ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[\"\" + dataSource].offline = true;\n dm[\"\" + isDataAvailable] = true;\n dm[\"\" + dataSource].json = e.result;\n dm[\"\" + adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n if (isRemoteData(_this) && _this.enableVirtualization) {\n if (args.requestType === 'virtualscroll') {\n _this.query.expand('VirtualScrollingAction');\n _this.showSpinner();\n }\n else if (args.requestType === 'searching' && args.searchString === '') {\n _this.query.expand('ClearSearchingAction');\n }\n else if (args.action === 'clearFilter') {\n _this.query.expand('ClearFilteringAction');\n }\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 && _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (args.action === 'filter') {\n if (_this.filterModule['currentFilterObject'] !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.requestType === 'searching') {\n if (_this.searchSettings.key !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.action === 'clearFilter' && _this.enableCollapseAll) {\n _this.collapseAll();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n if (_this.grid.isFrozenGrid() && _this.enableVirtualization && args['tableName'] === 'movable') {\n var movableContent = _this.grid.element.querySelector('.' + literals.movableContent);\n var frozenContent = _this.grid.element.querySelector('.' + literals.frozenContent);\n movableContent.style.height = frozenContent.style.height = 'auto';\n }\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[\"\" + ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (<DataManager>this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n this.columns.push(keys[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[\"\" + guid] = this.editSettings[\"\" + guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[parseInt(i.toString(), 10)]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n case 'Indent':\n case ContextMenuItems.RowIndent:\n items.push({ text: this.l10n.getConstant('RowIndent'),\n target: '.e-content', iconCss: 'e-indent e-icons', id: this.element.id + '_gridcontrol_cmenu_Indent' });\n break;\n case 'Outdent':\n case ContextMenuItems.RowOutdent:\n items.push({ text: this.l10n.getConstant('RowOutdent'),\n target: '.e-content', iconCss: 'e-outdent e-icons', id: this.element.id + '_gridcontrol_cmenu_Outdent' });\n break;\n default:\n items.push(this.contextMenuItems[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[parseInt(i.toString(), 10)]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n if (this.columnModel.length === 0) {\n index = index === 0 ? -1 : index;\n }\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[parseInt(i.toString(), 10)].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[parseInt(i.toString(), 10)] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[parseInt(i.toString(), 10)];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[parseInt(i.toString(), 10)][\"\" + prop])) {\n gridColumn[\"\" + prop] = this.getGridColumns(column[parseInt(i.toString(), 10)][\"\" + prop], false, this.columnModel.length - 1);\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = treeColumn[\"\" + prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n }\n }\n if (!treeGridColumn[\"\" + stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n if (!isNullOrUndefined(this.columnModel[this.treeColumnIndex]) && this.enableRtl) {\n if (gridColumn.field === this.columnModel[this.treeColumnIndex].field) {\n if (isNullOrUndefined(this.treeColumnTextAlign)) {\n this.treeColumnTextAlign = this.columnModel[this.treeColumnIndex].textAlign;\n this.treeColumnField = this.columnModel[this.treeColumnIndex].field;\n }\n gridColumn.textAlign = 'Right';\n }\n }\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'columns':\n this.grid.columns = this.getGridColumns(this.columns);\n break;\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[\"\" + prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n this.TreeGridLocale();\n this.grid.toolbar = this.getGridToolbar();\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[\"\" + prop].mode &&\n (newProp[\"\" + prop].mode === 'Cell' || newProp[\"\" + prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[parseInt(k.toString(), 10)];\n delete currentObject[\"\" + objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n this.ignoreInArrays(ignoreOnColumn, columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[parseInt(i.toString(), 10)]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[\"\" + isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[\"\" + primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[\"\" + primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[\"\" + columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[\"\" + columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[\"\" + prop] = gridColumns[parseInt(i.toString(), 10)][\"\" + prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[parseInt(i.toString(), 10)].field && this.columnModel[parseInt(i.toString(), 10)].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[parseInt(i.toString(), 10)].template = temp;\n }\n }\n }\n var deepMerge = 'deepMerge';\n this[\"\" + deepMerge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (!this.stackedHeader) {\n merge(this.columns, this.columnModel);\n }\n this[\"\" + deepMerge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[\"\" + persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[\"\" + persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n return this.grid.currentViewData;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[parseInt(i.toString(), 10)]);\n if (!currentViewRecords[parseInt(i.toString(), 10)].expanded) {\n i += findChildrenRecords(currentViewRecords[parseInt(i.toString(), 10)]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if ((this.getBatchChanges()[this.changedRecords].length || this.getBatchChanges()[this.deletedRecords].length ||\n this.getBatchChanges()[this.addedRecords].length) && this.editSettings.showConfirmDialog) {\n var dialogObj = this.grid.editModule[\"\" + obj];\n this.grid.editModule[\"\" + showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo_1 = this.grid.getRowInfo(target);\n var record = rowInfo_1.rowData;\n if (this.grid.isFrozenGrid() && this.enableVirtualization && !Object.keys(record).length) {\n var freezeRows = 'freezeRows';\n record = this.grid.contentModule[\"\" + freezeRows].filter(function (e) { return e.uid === rowInfo_1.row.getAttribute('data-uid'); })[0].data;\n }\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo_1.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo_1.row, record);\n }\n else {\n this.expandRow(rowInfo_1.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n _this.expandCollapse('expand', row, record);\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n var children = 'Children';\n if (!(isRemoteData(_this) && !isOffline(_this)) && (!isCountRequired(_this) || !isNullOrUndefined(record[\"\" + children]))) {\n var collapseArgs = { data: record, row: row };\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, true);\n }\n _this.trigger(events.expanded, collapseArgs);\n }\n }\n });\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[parseInt(i.toString(), 10)]);\n }\n };\n TreeGrid.prototype.setHeightForFrozenContent = function () {\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.grid.getFrozenColumns() > 0 || freeze) {\n this.grid.contentModule.refreshScrollOffset();\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n if (this.detailTemplate) {\n record = this.grid.getCurrentViewRecords()[row.getAttribute('data-rowindex')];\n }\n else {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(_this)) {\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, false);\n }\n _this.trigger(events.collapsed, collapseArgs);\n if (_this.enableInfiniteScrolling) {\n var scrollHeight = _this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = _this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < _this.grid.getRowHeight() + +_this.height) {\n _this.grid.getContent().firstElementChild.scrollBy(0, _this.grid.getRowHeight());\n }\n }\n }\n }\n });\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[parseInt(i.toString(), 10)][this.expandStateMapping] = state;\n editAction({ value: totalRecords[parseInt(i.toString(), 10)], action: 'edit' }, this, this.isSelfReference, totalRecords[parseInt(i.toString(), 10)].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[\"\" + this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[parseInt(i.toString(), 10)].parentItem)) {\n var puniqueID_1 = record[parseInt(i.toString(), 10)].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[parseInt(i.toString(), 10)], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[\"\" + primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[parseInt(i.toString(), 10)], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[\"\" + endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n else {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n else {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if ((!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) || (action === 'collapse' || (this.isExpandAll && this.loadChildOnDemand) && !isRemoteData(this) && this.isSelfReference && isCountRequired(this))) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.getCurrentViewRecords().indexOf(record);\n row = gridRows[parseInt(rowIndex.toString(), 10)];\n }\n else {\n rowIndex = +row.getAttribute('data-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n row.querySelectorAll('.e-treerowcell')[0].setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n }\n if (!isNullOrUndefined(targetEle) && targetEle.closest('.e-treerowcell').classList.contains('e-cellselectionbackground')) {\n targetEle.closest('.e-treerowcell').classList.remove('e-cellselectionbackground');\n targetEle.closest('.e-treerowcell').removeAttribute('aria-selected');\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n if (expandingArgs.requestType === 'collapse' && isCountRequired(this)) {\n var flatDataRecords = this.flatData.slice();\n for (var i = 0; i < flatDataRecords.length; i++) {\n if (flatDataRecords[parseInt(i.toString(), 10)]['parentUniqueID'] === expandingArgs.data['uniqueID']) {\n flatDataRecords.splice(i, 1);\n i = i - 1;\n }\n }\n this.dataResults.result = flatDataRecords;\n return;\n }\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[\"\" + childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n if (isCountRequired(_this)) {\n _this.flatData = _this.dataResults.result;\n }\n if (_this.enableInfiniteScrolling && isCountRequired(_this)) {\n _this.flatData = _this.infiniteScrollData;\n }\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[parseInt(i.toString(), 10)].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[parseInt(i.toString(), 10)]) {\n childData[parseInt(i.toString(), 10)].level = record.level + 1;\n childData[parseInt(i.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n childData[parseInt(i.toString(), 10)].parentItem = extend({}, record);\n childData[parseInt(i.toString(), 10)].taskData = extend({}, childData[parseInt(i.toString(), 10)]);\n delete childData[parseInt(i.toString(), 10)].parentItem.childRecords;\n delete childData[parseInt(i.toString(), 10)].taskData.parentItem;\n childData[parseInt(i.toString(), 10)].parentUniqueID = record.uniqueID;\n childData[parseInt(i.toString(), 10)].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[parseInt(i.toString(), 10)].uniqueID, childData[parseInt(i.toString(), 10)], _this);\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][_this.childMapping]) ||\n (childData[parseInt(i.toString(), 10)][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[parseInt(i.toString(), 10)].hasChildRecords = true;\n }\n if (isCountRequired(_this) && record[_this.childMapping] && record[_this.childMapping][parseInt(i.toString(), 10)]) {\n currentData.splice(index + 1 + i, 0, childData[parseInt(i.toString(), 10)]);\n }\n else {\n currentData.splice(index + 1 + i, record[_this.childMapping] &&\n record[_this.childMapping][parseInt(i.toString(), 10)] ? 1 : 0, childData[parseInt(i.toString(), 10)]);\n }\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[parseInt(index.toString(), 10)][\"\" + _this.childMapping] = childData;\n currentData[parseInt(index.toString(), 10)].childRecords = childData;\n currentData[parseInt(index.toString(), 10)].expanded = true;\n setValue('uniqueIDCollection.' + currentData[parseInt(index.toString(), 10)].uniqueID, currentData[parseInt(index.toString(), 10)], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[parseInt(j.toString(), 10)]);\n }\n }\n if (isCountRequired(_this) && _this.loadChildOnDemand && expandingArgs.requestType === 'expand') {\n _this.dataResults['expandRecord'] = {};\n _this.dataResults['expandRecord'] = expandingArgs.data;\n }\n _this.isExpandRefresh = true;\n var scrollHeightBeforeRefresh = _this.getContentTable().parentElement.scrollTop;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n if (_this.enableInfiniteScrolling) {\n _this.getContentTable().parentElement.scrollTop = scrollHeightBeforeRefresh;\n }\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n var fetchRemoteChildData = 'fetchRemoteChildData';\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return ((r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1))) || (r.querySelector('.e-gridrowindex' + record.index + 'level0' + '.e-summarycell')));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else if (action === 'collapse' && this.enableVirtualization) {\n this.dataModule[\"\" + fetchRemoteChildData]({ action: action, record: args.data, rows: null, parentRow: args.row });\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.setHeightForFrozenContent();\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[parseInt(i.toString(), 10)][\"\" + primaryKeyField]);\n rows.push(this.getRows()[parseInt(rowIndex.toString(), 10)]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var gridRowsObject = this.grid.getRowsObject();\n var currentViewData = this.getCurrentViewRecords();\n var currentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === record.uniqueID;\n });\n var currentIndex = currentViewData.indexOf(currentRecord[0]);\n if (!isNullOrUndefined(gridRowsObject[parseInt(currentIndex.toString(), 10)].visible) &&\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible !== false) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = true;\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)])) {\n rows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization\n || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[rows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n var parentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord[0].parentUniqueID;\n });\n if (!isNullOrUndefined(parentRecord[0]) && gridRows[currentViewData.indexOf(parentRecord[0])].getElementsByClassName('e-treegridcollapse').length) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = false;\n }\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[parseInt(i.toString(), 10)] });\n if ((!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) && childRecords[parseInt(i.toString(), 10)].childRecords.length > 0) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].expanded) || childRecords[parseInt(i.toString(), 10)].expanded)) {\n this.expandCollapse(action, rows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n }\n }\n }\n for (var i = 0; i < detailrows.length; i++) {\n if (!isNullOrUndefined(detailrows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization\n || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[detailrows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n detailrows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n }\n if (!this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this)\n || isCountRequired(this))) {\n this.grid.notify('refresh-Expand-and-Collapse', { rows: this.grid.getRowsObject() });\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[parseInt(i.toString(), 10)];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[parseInt(i.toString(), 10)]\n .cells[this.treeColumnIndex];\n var row = rows[parseInt(i.toString(), 10)];\n var rowData = this.grid.getRowsObject()[parseInt(i.toString(), 10)].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].style.display = 'none';\n row = rows[parseInt(i.toString(), 10)];\n var collapsingTd = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[parseInt(i.toString(), 10)].style.display = 'none';\n rightrows[parseInt(i.toString(), 10)].style.display = 'none';\n if (!rows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[parseInt(i.toString(), 10)];\n }\n else if (rightrows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[parseInt(i.toString(), 10)];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex] :\n this.grid.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[parseInt(i_1.toString(), 10)].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[parseInt(i_1.toString(), 10)]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, true);\n }\n }\n }\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[parseInt(i.toString(), 10)], cell: rows[parseInt(i.toString(), 10)].cells[parseInt(index.toString(), 10)],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[parseInt(i.toString(), 10)], row: rows[parseInt(i.toString(), 10)]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[parseInt(j.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(j.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(j.toString(), 10)].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], TreeGrid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[\"\" + columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[parseInt(f.toString(), 10)]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.modifiedRecords = 'modifiedRecords';\n /** @hidden */\n this.selectedRecords = 'selectedRecords';\n /** @hidden */\n this.selectedRows = 'selectedRows';\n /** @hidden */\n this.hasDropItem = true;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n var action = 'action';\n var dropPosition = 'dropPosition';\n var updateRowAndCellElements = 'updateRowAndCellElements';\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n this.parent[\"\" + dropPosition] = this.dropPosition;\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n var index = this.parent.getRowByIndex(fromIndexes[parseInt(i.toString(), 10)]).rowIndex;\n data[parseInt(i.toString(), 10)] = this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n if (this.parent[\"\" + action] === 'outdenting') {\n if (!isNullOrUndefined(data[0].parentItem)) {\n data[0].level = data[0].parentItem.level + 1;\n }\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[\"\" + action] === 'indenting') {\n index = this.parent.treeColumnIndex;\n }\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][\"\" + parentUniqueID]);\n var parentrow = this.parent.getRows()[parseInt(toIndex.toString(), 10)];\n totalRecord.push(parentData);\n rows.push(parentrow);\n this.parent[\"\" + updateRowAndCellElements](totalRecord, rows, index);\n }\n if (this.parent.enableImmutableMode && this.parent[\"\" + action] === 'outdenting') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[\"\" + action] === 'outdenting') {\n index = this.parent.treeColumnIndex;\n }\n var record = args.data[0];\n var row = this.parent.getRows()[fromIndexes[0]];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(record);\n rows.push(row);\n this.parent[\"\" + updateRowAndCellElements](totalRecord, rows, index);\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.indentOutdentAction = function (record, request) {\n var tObj = this.parent;\n var action = 'action';\n var droppedIndex = 'dropIndex';\n var selectedItemIndex = -1;\n if (isNullOrUndefined(record) && this.parent.selectedRowIndex === -1) {\n return;\n }\n else {\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n this.selectedItem = isNullOrUndefined(record) ?\n tObj.getCurrentViewRecords()[parseInt(selectedItemIndex.toString(), 10)] : record;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(this.selectedItem[\"\" + primaryKeyField]);\n this.selectedRow = this.parent[this.selectedRows] = selectedItemIndex !== -1 ?\n this.parent.getSelectedRows()[0]\n : this.parent.grid.getRowByIndex(rowIndex);\n this.selectedRecord = this.parent[this.selectedRecords] = selectedItemIndex !== -1 ?\n tObj.getCurrentViewRecords()[parseInt(selectedItemIndex.toString(), 10)]\n : this.selectedItem;\n if (request === 'indent') {\n var record_1 = tObj.getCurrentViewRecords()[this.selectedRow.rowIndex - 1];\n var dropIndex = void 0;\n if (this.selectedRow.rowIndex === 0 || this.selectedRow.rowIndex === -1 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level - record_1.level === 1) {\n return;\n }\n if (record_1.level > this.selectedRecord.level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[parseInt(i.toString(), 10)].taskData ===\n record_1.parentItem.taskData) {\n dropIndex = i;\n if (tObj.enableVirtualization) {\n dropIndex = parseInt(tObj.getRows()[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10);\n }\n }\n }\n }\n else {\n dropIndex = this.selectedRow.rowIndex - 1;\n }\n if (this.parent.enableVirtualization && this.selectedRecord && !(record_1.level > this.selectedRecord.level)) {\n dropIndex = parseInt(this.selectedRow.getAttribute('data-rowindex'), 10) - 1;\n }\n tObj[\"\" + action] = 'indenting';\n tObj[\"\" + droppedIndex] = dropIndex;\n this.eventTrigger('indenting', dropIndex);\n }\n else if (request === 'outdent') {\n if (this.selectedRow.rowIndex === -1 || this.selectedRow.rowIndex === 0 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level === 0) {\n return;\n }\n var dropIndex = void 0;\n var parentItem = this.selectedRecord.parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[parseInt(i.toString(), 10)].uniqueID === parentItem.uniqueID) {\n dropIndex = i;\n }\n }\n if (this.parent.enableVirtualization && this.selectedRecord) {\n dropIndex = parseInt(this.parent.getRows()[parseInt(dropIndex.toString(), 10)].getAttribute('data-rowindex'), 10);\n }\n tObj[\"\" + action] = 'outdenting';\n tObj[\"\" + droppedIndex] = dropIndex;\n this.eventTrigger('outdenting', dropIndex);\n }\n }\n };\n RowDD.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var actionArgs = {\n action: action,\n cancel: false,\n data: [this.parent[this.selectedRecords]],\n row: this.parent[this.selectedRows]\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.action === 'indenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'child');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'child');\n }\n }\n else if (actionArgs.action === 'outdenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'below');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'below');\n }\n }\n }\n });\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n for (var i = 0; i < currentData.length; i++) {\n currentData[parseInt(i.toString(), 10)].index = i;\n if (!isNullOrUndefined(currentData[parseInt(i.toString(), 10)].parentItem)) {\n var updatedParent = getValue('uniqueIDCollection.' + currentData[parseInt(i.toString(), 10)].parentUniqueID, this.parent);\n currentData[parseInt(i.toString(), 10)].parentItem.index = updatedParent.index;\n }\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[parseInt(i.toString(), 10)];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[parseInt(i.toString(), 10)];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[parseInt(j.toString(), 10)]) === -1) {\n dragRecords_1.splice(j, 0, childData[parseInt(j.toString(), 10)]);\n childData[parseInt(j.toString(), 10)].taskData = extend({}, childData[parseInt(j.toString(), 10)]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping)\n && draggedRecord_1[tObj.parentIdMapping] !== null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[parseInt(i.toString(), 10)].uniqueID, dragRecords[parseInt(i.toString(), 10)], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[parseInt(i.toString(), 10)];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n var keys = Object.keys(tempDataSource);\n for (var i = 0; i < keys.length; i++) {\n if (tempDataSource[parseInt(i.toString(), 10)][this.parent.childMapping] ===\n droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][parseInt(i.toString(), 10)]\n = childRecords[parseInt(i.toString(), 10)].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n else {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid')\n || !parentsUntil(args.target, 'e-gridcontent')) {\n this.dropPosition = 'Invalid';\n this.addErrorElem();\n }\n }\n // To get the corresponding drop position related to mouse position\n var tObj = this.parent;\n var rowTop = 0;\n var roundOff = 0;\n var toolHeight = tObj.toolbar && tObj.toolbar.length ?\n document.getElementById(tObj.element.id + '_gridcontrol_toolbarItems').offsetHeight : 0;\n // tObj.lastRow = tObj.getRowByIndex(tObj.getCurrentViewRecords().length - 1);\n var positionOffSet = this.getOffset(tObj.element);\n // let contentHeight1: number = (tObj.element.offsetHeight - (tObj.getContent() as HTMLElement).offsetHeight) + positionOffSet.top;\n var contentHeight = tObj.getHeaderContent().offsetHeight + positionOffSet.top + toolHeight;\n var scrollTop = tObj.getContent().firstElementChild.scrollTop;\n if (!isNullOrUndefined(rowEle)) {\n rowPositionHeight = rowEle.offsetTop - scrollTop;\n }\n // let scrollTop = (tObj.grid.scrollModule as any).content.scrollTop;\n if (this.parent.enableVirtualization) {\n rowTop = rowEle.getBoundingClientRect().top;\n }\n else {\n rowTop = rowPositionHeight + contentHeight + roundOff;\n }\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = errorVal.innerHTML;\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = content;\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (this.hasDropItem && dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) + ele.offsetWidth + 16;\n var spanLeft = !this.parent.enableRtl ? dropItemLeft : 0;\n dropItemSpan.style.left = spanLeft + \"px\";\n this.hasDropItem = false;\n }\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n var errorValue = document.querySelector('.errorValue');\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (errorelem) {\n if (dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) - errorelem.offsetWidth - 16;\n setStyleAttribute(errorValue, {\n paddingLeft: '0px'\n });\n if (!this.parent.enableRtl) {\n setStyleAttribute(dropItemSpan, {\n left: dropItemLeft + \"px\"\n });\n }\n }\n errorelem.remove();\n }\n this.hasDropItem = true;\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[parseInt(i.toString(), 10)].classList.add(className);\n }\n else {\n cells[parseInt(i.toString(), 10)].classList.remove(className);\n }\n }\n };\n RowDD.prototype.getOffset = function (element) {\n var box = element.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n };\n RowDD.prototype.Rowdraging = function (args) {\n var tObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n cloneElement.style.cursor = '';\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n var rowIdx = rowEle ? rowEle.rowIndex : -1;\n var dragRecords = [];\n var droppedRecord = tObj.getCurrentViewRecords()[parseInt(rowIdx.toString(), 10)];\n this.removeErrorElem();\n this.canDrop = true;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n if (rowIdx !== -1) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.canDrop = false;\n this.addErrorElem();\n }\n if (!tObj.rowDropSettings.targetID && this.canDrop) {\n tObj.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n if (tObj.rowDropSettings.targetID) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID) {\n var srcControl = dropElement.ej2_instances[0];\n srcControl.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n }\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID)) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (!dropElement) {\n cloneElement.style.cursor = 'default';\n }\n }\n };\n RowDD.prototype.rowDropped = function (args) {\n var tObj = this.parent;\n var parentItem = 'parentItem';\n if (!tObj.rowDropSettings.targetID) {\n if (parentsUntil(args.target, 'e-content')) {\n if (this.parent.element.querySelector('.e-errorelem')) {\n this.dropPosition = 'Invalid';\n }\n setValue('dropPosition', this.dropPosition, args);\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel) {\n if (!isCountRequired(this.parent)) {\n this.dropRows(args);\n }\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n tObj.grid.refresh();\n if (!isNullOrUndefined(tObj.getHeaderContent().querySelector('.e-firstrow-border'))) {\n tObj.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n }\n }\n }\n else {\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID) || parentsUntil(args.target, 'e-treegrid') &&\n parentsUntil(args.target, 'e-treegrid').id === tObj.rowDropSettings.targetID || args.target && document.getElementById(tObj.rowDropSettings.targetID)) {\n setValue('dropPosition', this.dropPosition, args);\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel && tObj.rowDropSettings.targetID) {\n this.dragDropGrid(args);\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n }\n }\n }\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-firstrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n else if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-lastrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n if (this.parent.enableImmutableMode && !this.parent.allowPaging && !isNullOrUndefined(args.data[0][\"\" + parentItem])) {\n var index = this.parent.treeColumnIndex;\n index = index + 1;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(args.data[0][\"\" + primaryKeyField]);\n var row = this.parent.getRows()[parseInt(rowIndex.toString(), 10)];\n var data = args.data[0];\n if (this.dropPosition === 'middleSegment') {\n var record = [];\n var rows = [];\n record.push(data);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n data = getParentData(this.parent, args.data[0][\"\" + parentUniqueID]);\n rowIndex = this.parent.grid.getRowIndexByPrimaryKey(data[\"\" + primaryKeyField]);\n var parentrow = this.parent.getRows()[parseInt(rowIndex.toString(), 10)];\n record.push(data);\n rows.push(parentrow);\n for (var i = 0; i < record.length; i++) {\n this.parent.renderModule.cellRender({\n data: record[parseInt(i.toString(), 10)],\n cell: rows[parseInt(i.toString(), 10)].cells[parseInt(index.toString(), 10)],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n var targetEle = parentrow.getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n else {\n this.parent.renderModule.cellRender({\n data: data, cell: row.cells[parseInt(index.toString(), 10)],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n };\n RowDD.prototype.dragDropGrid = function (args) {\n var tObj = this.parent;\n var targetRow = closest(args.target, 'tr');\n var targetIndex = isNaN(this.getTargetIdx(targetRow)) ? 0 : this.getTargetIdx(targetRow);\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n var srcControl;\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID && !isRemoteData(this.parent)\n && !isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n var records = tObj.getSelectedRecords();\n var indexes = [];\n for (var i = 0; i < records.length; i++) {\n indexes[parseInt(i.toString(), 10)] = records[parseInt(i.toString(), 10)].index;\n }\n var data = srcControl.dataSource;\n if (this.parent.idMapping !== null && (isNullOrUndefined(this.dropPosition) || this.dropPosition === 'bottomSegment' || this.dropPosition === 'Invalid') && !(data.length)) {\n var actualData = [];\n for (var i = 0; i < records.length; i++) {\n if (records[parseInt(i.toString(), 10)].hasChildRecords) {\n actualData.push(records[parseInt(i.toString(), 10)]);\n var child = findChildrenRecords(records[parseInt(i.toString(), 10)]);\n for (var i_1 = 0; i_1 < child.length; i_1++) {\n actualData.push(child[parseInt(i_1.toString(), 10)]); // push child records to drop the parent record along with its child records\n }\n }\n }\n if (actualData.length) {\n records = actualData;\n }\n }\n tObj.notify(events.rowsRemove, { indexes: indexes, records: records });\n srcControl.notify(events.rowsAdd, { toIndex: targetIndex, records: records });\n var srcControlFlatData = srcControl.rowDragAndDropModule.treeGridData;\n if (!isNullOrUndefined(srcControlFlatData)) {\n for (var i = 0; i < srcControlFlatData.length; i++) {\n srcControlFlatData[parseInt(i.toString(), 10)].index = i;\n if (!isNullOrUndefined(srcControlFlatData[parseInt(i.toString(), 10)].parentItem)) {\n var actualIndex = getValue('uniqueIDCollection.' + srcControlFlatData[parseInt(i.toString(), 10)].parentUniqueID + '.index', srcControl);\n srcControlFlatData[parseInt(i.toString(), 10)].parentItem.index = actualIndex;\n }\n }\n }\n tObj.grid.refresh();\n srcControl.grid.refresh();\n if (srcControl.grid.dataSource.length > 1) {\n srcControl.grid.refresh();\n if (!isNullOrUndefined(srcControl.getHeaderContent().querySelector('.e-firstrow-border'))) {\n srcControl.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n if (!isNullOrUndefined(srcControl.getContent().querySelector('.e-lastrow-border'))) {\n srcControl.getContent().querySelector('.e-lastrow-border').remove();\n }\n }\n }\n if (isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n tObj.grid.refresh();\n srcControl.grid.refresh();\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute('data-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record, data) {\n var parentItem = record.parentItem;\n var selectedItemIndex = -1;\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n if (this.dropPosition === 'bottomSegment') {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = selectedItemIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(data[0][\"\" + primaryKeyField]))\n : this.parent.getSelectedRowIndexes()[0];\n var selectedRecord = this.parent.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getCurrentViewRecords()[parseInt(selectedItemIndex.toString(), 10)].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = tObj.selectedRowIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(args.data[0][\"\" + primaryKeyField])) - 1\n : tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n this.getParentData(record, args.data);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n if (this.parent.enableVirtualization) {\n var index = this.parent.getRowByIndex(args.dropIndex).rowIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n }\n else {\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n this.parent[this.modifiedRecords].push(args.data[0], droppedRecord);\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_1 = function (i) {\n draggedRecord_2 = dragRecords[parseInt(i.toString(), 10)];\n this_1.draggedRecord = draggedRecord_2;\n if (this_1.dropPosition !== 'Invalid') {\n if (!tObj.rowDropSettings.targetID || isByMethod) {\n this_1.deleteDragRow();\n }\n if (this_1.draggedRecord === this_1.droppedRecord) {\n var correctIndex = this_1.getTargetIdx(args.target.offsetParent.parentElement);\n if (isNaN(correctIndex)) {\n correctIndex = this_1.getTargetIdx(args.target.parentElement);\n }\n args.dropIndex = correctIndex;\n droppedRecord = this_1.droppedRecord = this_1.parent.getCurrentViewRecords()[args.dropIndex];\n }\n if (droppedRecord.parentItem || this_1.dropPosition === 'middleSegment') {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.draggedRecord);\n if (newParentIndex !== -1) {\n parentRecords.splice(newParentIndex, 1);\n }\n }\n var recordIndex1 = this_1.treeGridData.indexOf(droppedRecord);\n this_1.dropAtTop(recordIndex1);\n if (this_1.dropPosition === 'bottomSegment') {\n if (!droppedRecord.hasChildRecords) {\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + 1, 0, this_1.draggedRecord);\n }\n else {\n count = this_1.getChildCount(droppedRecord, 0);\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord);\n }\n if (isNullOrUndefined(droppedRecord.parentItem)) {\n delete draggedRecord_2.parentItem;\n delete draggedRecord_2.parentUniqueID;\n draggedRecord_2.level = 0;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = null;\n }\n }\n if (droppedRecord.parentItem) {\n var rec = this_1.getChildrecordsByParentID(droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(droppedRecord) + 1;\n childRecords.splice(droppedRecordIndex, 0, draggedRecord_2);\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.parentUniqueID = droppedRecord.parentUniqueID;\n draggedRecord_2.level = droppedRecord.level;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_1(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[parseInt(recordIndex1.toString(), 10)].parentItem;\n this.draggedRecord.parentUniqueID = this.treeGridData[parseInt(recordIndex1.toString(), 10)].parentUniqueID;\n this.draggedRecord.level = this.treeGridData[parseInt(recordIndex1.toString(), 10)].level;\n this.treeGridData.splice(parseInt(recordIndex1.toString(), 10), 0, this.draggedRecord);\n if (this.draggedRecord.hasChildRecords) {\n var level = 1;\n this.updateChildRecord(this.draggedRecord, recordIndex1);\n this.updateChildRecordLevel(this.draggedRecord, level);\n }\n if (this.droppedRecord.parentItem) {\n var rec = this.getChildrecordsByParentID(this.droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(this.droppedRecord);\n childRecords.splice(droppedRecordIndex, 0, this.draggedRecord);\n }\n }\n };\n RowDD.prototype.recordLevel = function () {\n var tObj = this.parent;\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var childItem = tObj.childMapping;\n if (!droppedRecord.hasChildRecords) {\n droppedRecord.hasChildRecords = true;\n droppedRecord.hasFilteredChildRecords = true;\n if (isNullOrUndefined(droppedRecord.childRecords) || droppedRecord.childRecords.length === 0) {\n droppedRecord.childRecords = [];\n if (!tObj.parentIdMapping && isNullOrUndefined(droppedRecord.taskData[\"\" + childItem])) {\n droppedRecord.taskData[\"\" + childItem] = [];\n }\n }\n }\n if (this.dropPosition === 'middleSegment') {\n var parentItem = extend({}, droppedRecord);\n delete parentItem.childRecords;\n draggedRecord.parentItem = parentItem;\n draggedRecord.parentUniqueID = droppedRecord.uniqueID;\n droppedRecord.childRecords.splice(droppedRecord.childRecords.length, 0, draggedRecord);\n var isSelfReference = 'isSelfReference';\n if (tObj[\"\" + isSelfReference]) {\n droppedRecord[tObj.childMapping] = [];\n droppedRecord[tObj.childMapping].splice(droppedRecord[tObj.childMapping].length, 0, draggedRecord);\n }\n if (!isNullOrUndefined(draggedRecord) && !tObj.parentIdMapping && !isNullOrUndefined(droppedRecord.taskData[\"\" + childItem])) {\n droppedRecord.taskData[tObj.childMapping].splice(droppedRecord.childRecords.length, 0, draggedRecord.taskData);\n }\n if (!draggedRecord.hasChildRecords) {\n draggedRecord.level = droppedRecord.level + 1;\n }\n else {\n var level = 1;\n draggedRecord.level = droppedRecord.level + 1;\n this.updateChildRecordLevel(draggedRecord, level);\n }\n droppedRecord.expanded = true;\n }\n };\n RowDD.prototype.deleteDragRow = function () {\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n this.treeGridData = this.parent.grid.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n var deletedRow = getParentData(this.parent, this.draggedRecord.uniqueID);\n if (!isNullOrUndefined(deletedRow.childRecords) && deletedRow.childRecords.length) {\n deletedRow.hasChildRecords = true;\n }\n this.removeRecords(deletedRow);\n };\n RowDD.prototype.updateChildRecord = function (record, count) {\n var currentRecord;\n var tObj = this.parent;\n var length = 0;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[parseInt(i.toString(), 10)].uniqueID, tObj);\n }\n else {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n }\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[parseInt(i.toString(), 10)].uniqueID, this.parent);\n }\n else {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n }\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping || tObj.enableImmutableMode) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[parseInt(i.toString(), 10)][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[parseInt(i.toString(), 10)][this.parent.idMapping]\n === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[parseInt(j.toString(), 10)][\"\" + primaryKeyField] === deletedRow[\"\" + primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n if (this.parent[this.modifiedRecords].indexOf(flatParentData) === -1 && !isNullOrUndefined(flatParentData)) {\n this.parent[this.modifiedRecords].push(flatParentData);\n }\n if (!isNullOrUndefined(flatParentData)) {\n this.updateModifiedRecords(flatParentData);\n }\n }\n };\n RowDD.prototype.updateModifiedRecords = function (record) {\n var parentData = getParentData(this.parent, record.parentUniqueID);\n if (!isNullOrUndefined(parentData)) {\n this.parent[this.modifiedRecords].push(parentData);\n this.updateModifiedRecords(parentData);\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[parseInt(i_2.toString(), 10)][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[parseInt(i_3.toString(), 10)][this.parent.idMapping]\n === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[parseInt(i.toString(), 10)];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\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 { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the row drop settings of the TreeGrid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\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})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.nextInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.nextInfo.page } }, true);\n }\n else if (!isNullOrUndefined(notifyArgs.virtualInfo) && !notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n if (!((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent))\n || notifyArgs.virtualInfo.blockIndexes.length === 1) {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n for (var r = 0; r < rows.length; r++) {\n rows[parseInt(r.toString(), 10)].index = (this.visualData).indexOf(rows[parseInt(r.toString(), 10)].data);\n }\n return rows;\n }\n };\n TreeVirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var clear = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'reorder',\n 'save', 'delete'].some(function (value) { return action === value; });\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n var model = 'model';\n var currentPage = this[\"\" + model].currentPage;\n if (clear) {\n this.cache = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n this.data = {};\n this.groups = {};\n }\n else if (action === 'virtualscroll' && this.cache[parseInt(currentPage.toString(), 10)] &&\n this.cache[parseInt(currentPage.toString(), 10)].length >\n (this.parent.contentModule).getBlockSize()) {\n delete this.cache[parseInt(currentPage.toString(), 10)];\n }\n }\n else {\n if (clear || action === 'virtualscroll') {\n this.cache = {};\n this.data = {};\n this.groups = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[parseInt(f.toString(), 10)];\n this.addParentRecord(rec);\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'None') &&\n (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== ''))) {\n this.isHierarchyFilter = true;\n }\n var ischild = getObject('childRecords', rec);\n if (!isNullOrUndefined(ischild) && ischild.length) {\n setValue('hasFilteredChildRecords', this.checkChildExsist(rec), rec);\n }\n var parent_1 = getObject('parentItem', rec);\n if (!isNullOrUndefined(parent_1)) {\n var parRecord = getParentData(this.parent, rec.parentItem.uniqueID, true);\n //let parRecord: Object = this.flatFilteredData.filter((e: ITreeData) => {\n // return e.uniqueID === rec.parentItem.uniqueID; })[0];\n setValue('hasFilteredChildRecords', true, parRecord);\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n }\n }\n if (this.flatFilteredData.length > 0 && this.isHierarchyFilter) {\n this.updateFilterLevel();\n }\n this.parent.notify('updateAction', { result: this.filteredResult });\n };\n Filter.prototype.updateParentFilteredRecord = function (record) {\n var parRecord = getParentData(this.parent, record.parentItem.uniqueID, true);\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (parRecord && Object.prototype.hasOwnProperty.call(uniqueIDValue, parRecord.uniqueID)) {\n setValue('hasFilteredChildRecords', true, parRecord);\n }\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n };\n Filter.prototype.addParentRecord = function (record) {\n var parent = getParentData(this.parent, record.parentUniqueID);\n //let parent: Object = this.parent.flatData.filter((e: ITreeData) => {return e.uniqueID === record.parentUniqueID; })[0];\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode === 'None' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (isNullOrUndefined(parent)) {\n if (this.flatFilteredData.indexOf(record) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n record.hasFilteredChildRecords = true;\n }\n return;\n }\n }\n else {\n this.addParentRecord(parent);\n if (this.flatFilteredData.indexOf(parent) !== -1 || this.filteredResult.indexOf(parent) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n else {\n if (this.filteredResult.indexOf(record) === -1 && this.flatFilteredData.indexOf(record) !== -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n }\n }\n else {\n if (!isNullOrUndefined(parent)) {\n var hierarchyMode_1 = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode_1 === 'Child' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(parent) !== -1) {\n this.addParentRecord(parent);\n }\n }\n else {\n this.addParentRecord(parent);\n }\n }\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n };\n Filter.prototype.checkChildExsist = function (records) {\n var childRec = getObject('childRecords', records);\n var isExist = false;\n for (var count = 0; count < childRec.length; count++) {\n var ischild = childRec[parseInt(count.toString(), 10)].childRecords;\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'Both') && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== ''))) {\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (!Object.prototype.hasOwnProperty.call(uniqueIDValue, childRec[parseInt(count.toString(), 10)].uniqueID)) {\n this.filteredResult.push(childRec[parseInt(count.toString(), 10)]);\n setValue('uniqueIDFilterCollection.' + childRec[parseInt(count.toString(), 10)].uniqueID, childRec[parseInt(count.toString(), 10)], this.parent);\n isExist = true;\n }\n }\n if ((hierarchyMode === 'None')\n && (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(childRec[parseInt(count.toString(), 10)]) !== -1) {\n isExist = true;\n break;\n }\n }\n if (!isNullOrUndefined(ischild) && ischild.length) {\n isExist = this.checkChildExsist(childRec[parseInt(count.toString(), 10)]);\n }\n if ((hierarchyMode === 'Child' || hierarchyMode === 'Both') && childRec.length) {\n isExist = true;\n }\n }\n return isExist;\n };\n Filter.prototype.updateFilterLevel = function () {\n var record = this.filteredResult;\n var len = this.filteredResult.length;\n for (var c = 0; c < len; c++) {\n var parent_2 = getParentData(this.parent, record[parseInt(c.toString(), 10)].parentUniqueID);\n var isPrst = record.indexOf(parent_2) !== -1;\n if (isPrst) {\n var parent_3 = getParentData(this.parent, record[parseInt(c.toString(), 10)].parentUniqueID, true);\n record[parseInt(c.toString(), 10)].filterLevel = parent_3.filterLevel + 1;\n }\n else {\n record[parseInt(c.toString(), 10)].filterLevel = 0;\n this.filteredParentRecs.push(record[parseInt(c.toString(), 10)]);\n }\n }\n };\n Filter.prototype.clearFilterLevel = function (data) {\n var count = 0;\n var flatData = data.flatData;\n var len = flatData.length;\n var currentRecord;\n for (count; count < len; count++) {\n currentRecord = flatData[parseInt(count.toString(), 10)];\n var fLevel = currentRecord.filterLevel;\n if (fLevel || fLevel === 0 || !isNullOrUndefined(currentRecord.hasFilteredChildRecords)) {\n currentRecord.hasFilteredChildRecords = null;\n currentRecord.filterLevel = null;\n }\n }\n this.filteredResult = [];\n this.parent.notify('updateResults', { result: flatData, count: flatData.length });\n };\n return Filter;\n}());\nexport { Filter };\n","import { getObject, Grid, ExcelExport as GridExcel } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, getParentData, getExpandStatus } from '../utils';\nimport { isNullOrUndefined, setValue, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid Excel Export module\n *\n * @hidden\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for Excel Export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ExcelExport(parent) {\n this.isCollapsedStatePersist = false;\n Grid.Inject(GridExcel);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ExcelExport module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.addEventListener = function () {\n this.parent.on('updateResults', this.updateExcelResultModel, this);\n this.parent.on('excelCellInfo', this.excelQueryCellInfo, this);\n this.parent.grid.on('export-RowDataBound', this.exportRowDataBound, this);\n this.parent.grid.on('finalPageSetup', this.finalPageSetup, this);\n };\n /**\n * To destroy the Excel Export\n *\n * @returns {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateResults', this.updateExcelResultModel);\n this.parent.off('excelCellInfo', this.excelQueryCellInfo);\n this.parent.grid.off('export-RowDataBound', this.exportRowDataBound);\n this.parent.grid.off('finalPageSetup', this.finalPageSetup);\n };\n ExcelExport.prototype.updateExcelResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n ExcelExport.prototype.Map = function (excelExportProperties, \n /* eslint-disable-next-line */\n isMultipleExport, workbook, isBlob, isCsv) {\n var _this = this;\n var dataSource = this.parent.dataSource;\n var property = Object();\n setValue('isCsv', isCsv, property);\n setValue('cancel', false, property);\n if (!isNullOrUndefined(excelExportProperties)) {\n this.isCollapsedStatePersist = excelExportProperties.isCollapsedStatePersist;\n }\n return new Promise(function (resolve) {\n var dm = _this.isLocal() && !(dataSource instanceof DataManager) ? new DataManager(dataSource)\n : _this.parent.dataSource;\n var query = new Query();\n if (!_this.isLocal()) {\n query = _this.generateQuery(query);\n setValue('query', query, property);\n }\n _this.parent.trigger(event.beforeExcelExport, extend(property, excelExportProperties));\n if (getObject('cancel', property)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customData = null;\n if (!isNullOrUndefined(excelExportProperties) && !isNullOrUndefined(excelExportProperties.dataSource)) {\n customData = excelExportProperties.dataSource;\n }\n excelExportProperties = _this.manipulateExportProperties(excelExportProperties, dataSource, e);\n return _this.parent.grid.excelExportModule.Map(_this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob).then(function (book) {\n if (customData != null) {\n excelExportProperties.dataSource = customData;\n }\n else {\n delete excelExportProperties.dataSource;\n }\n resolve(book);\n });\n });\n });\n };\n ExcelExport.prototype.generateQuery = function (query, property) {\n if (!isNullOrUndefined(property) && property.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n property.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n ExcelExport.prototype.manipulateExportProperties = function (property, dtSrc, queryResult) {\n //count not required for this query\n var args = Object();\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n if (!isNullOrUndefined(property) && !isNullOrUndefined(property.exportType)) {\n setValue('exportType', property.exportType, args);\n }\n if (!this.isLocal()) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getObject('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!this.isLocal()) {\n this.parent.flatData = [];\n }\n if (property && property.dataSource && this.isLocal()) {\n var flatsData = this.parent.flatData;\n var dataSrc = property.dataSource instanceof DataManager ? property.dataSource.dataSource.json : property.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatsData;\n }\n property = isNullOrUndefined(property) ? Object() : property;\n property.dataSource = new DataManager({ json: dtSrc });\n return property;\n };\n /**\n * TreeGrid Excel Export cell modifier\n *\n * @param {ExcelQueryCellInfoEventArgs} args - current cell details\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.excelQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = args.data;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.indent = pad;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('excelQueryCellInfo', args);\n };\n ExcelExport.prototype.exportRowDataBound = function (excelRow) {\n if (excelRow.type === 'excel') {\n var excelrowobj = excelRow.rowObj.data;\n var filtercolumnlength = this.parent.grid.filterSettings.columns.length;\n var rowlength = excelRow.excelRows.length;\n var rowlevel = excelrowobj.level;\n if (excelrowobj.parentItem && getParentData(this.parent, excelrowobj.parentItem.uniqueID, Boolean(filtercolumnlength))) {\n var expandedStatus = false;\n var sublevelState = false;\n var state = getExpandStatus(this.parent, excelrowobj, this.parent.parentData);\n if (this.isCollapsedStatePersist && (!state || !this.parent.isLocalData)) {\n expandedStatus = true;\n sublevelState = excelrowobj.expanded ? false : true;\n }\n excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel, isCollapsed: sublevelState,\n isHidden: expandedStatus };\n }\n else if (excelrowobj.hasChildRecords && isNullOrUndefined(excelrowobj.parentItem)) {\n excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel };\n }\n }\n };\n /* eslint-disable-next-line */\n ExcelExport.prototype.finalPageSetup = function (workbook) {\n for (var i = 0; i < workbook.worksheets.length; i++) {\n if (workbook.worksheets[parseInt(i.toString(), 10)].rows) {\n workbook.worksheets[parseInt(i.toString(), 10)].pageSetup = { isSummaryRowBelow: false };\n }\n }\n };\n ExcelExport.prototype.isLocal = function () {\n return !isRemoteData(this.parent) && isOffline(this.parent);\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { getObject, PdfExport as GridPdf, Grid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline } from '../utils';\nimport { isNullOrUndefined, setValue, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid PDF Export module\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for PDF export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function PdfExport(parent) {\n Grid.Inject(GridPdf);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} PdfExport module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.addEventListener = function () {\n this.parent.on('pdfCellInfo', this.pdfQueryCellInfo, this);\n this.parent.on('updateResults', this.updatePdfResultModel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('pdfCellInfo', this.pdfQueryCellInfo);\n this.parent.off('updateResults', this.updatePdfResultModel);\n };\n /**\n * To destroy the PDF Export\n *\n * @returns {void}\n * @hidden\n */\n PdfExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n PdfExport.prototype.updatePdfResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n PdfExport.prototype.Map = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n var dtSrc = this.parent.dataSource;\n var prop = Object();\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('cancel', false, prop);\n return new Promise(function (resolve) {\n var dm = isLocal && !(dtSrc instanceof DataManager) ? new DataManager(dtSrc)\n : _this.parent.dataSource;\n var query = new Query();\n if (!isLocal) {\n query = _this.generateQuery(query);\n setValue('query', query, prop);\n }\n _this.parent.trigger(event.beforePdfExport, extend(prop, pdfExportProperties));\n if (getObject('cancel', prop)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customsData = null;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n customsData = pdfExportProperties.dataSource;\n }\n pdfExportProperties = _this.manipulatePdfProperties(pdfExportProperties, dtSrc, e);\n return _this.parent.grid.pdfExportModule.Map(_this.parent.grid, pdfExportProperties, isMultipleExport, pdfDoc, isBlob).then(function (document) {\n if (customsData != null) {\n pdfExportProperties.dataSource = customsData;\n }\n else {\n delete pdfExportProperties.dataSource;\n }\n resolve(document);\n });\n });\n });\n };\n PdfExport.prototype.generateQuery = function (query, prop) {\n if (!isNullOrUndefined(prop) && prop.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n prop.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n PdfExport.prototype.manipulatePdfProperties = function (prop, dtSrc, queryResult) {\n var args = {};\n //count not required for this query\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n setValue('isPdfExport', true, args);\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.isCollapsedStatePersist)) {\n setValue('isCollapsedStatePersist', prop.isCollapsedStatePersist, args);\n }\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.exportType)) {\n setValue('exportType', prop.exportType, args);\n }\n if (!isLocal) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getValue('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!isLocal) {\n this.parent.flatData = [];\n }\n if (prop && prop.dataSource && isLocal) {\n var flatDatas = this.parent.flatData;\n var dataSrc = prop.dataSource instanceof DataManager ? prop.dataSource.dataSource.json : prop.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatDatas;\n }\n prop = isNullOrUndefined(prop) ? {} : prop;\n prop.dataSource = new DataManager({ json: dtSrc });\n return prop;\n };\n /**\n * TreeGrid PDF Export cell modifier\n *\n * @param {PdfQueryCellInfoEventArgs} args - Current cell details\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.pdfQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = getObject('data', args);\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.paragraphIndent = pad * 3;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('pdfQueryCellInfo', args);\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { Grid } from '@syncfusion/ej2-grids';\nimport { Page as GridPage } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { getValue, isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * The `Page` module is used to render pager and handle paging action.\n *\n * @hidden\n */\nvar Page = /** @class */ (function () {\n function Page(parent) {\n Grid.Inject(GridPage);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.addEventListener = function () {\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandPagedchilds, this);\n this.parent.on(events.pagingActions, this.pageAction, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandPagedchilds);\n this.parent.off(events.pagingActions, this.pageAction);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Pager module name\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.parent.grid.pagerModule.refresh();\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.parent.grid.pagerModule.goToPage(pageNo);\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n this.parent.grid.pagerModule.updateExternalMessage(message);\n };\n /**\n * @param {{action: string, row: HTMLTableRowElement, record: ITreeData, args: RowCollapsedEventArgs}} rowDetails - Expand Collapse details arguments\n * @param {string} rowDetails.action - Expand Collapse action type\n * @param {HTMLTableRowElement} rowDetails.row - Row element\n * @param {ITreeData} rowDetails.record - Row object data\n * @param {RowCollapsedEventArgs} rowDetails.args - Expand Collapse event arguments\n * @hidden\n * @returns {void}\n */\n Page.prototype.collapseExpandPagedchilds = function (rowDetails) {\n rowDetails.record.expanded = rowDetails.action === 'collapse' ? false : true;\n this.parent.flatData.map(function (e) { return e.expanded = e.uniqueID === rowDetails.record.uniqueID &&\n e.expanded !== rowDetails.record.expanded ? rowDetails.record.expanded : e.expanded; });\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[\"\" + primaryKeyField_1] === rowDetails.record[\"\" + primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[\"\" + action] === 'collapse') {\n targetEle = ret[\"\" + row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[\"\" + action] === 'expand') {\n targetEle = ret[\"\" + row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[parseInt(t.toString(), 10)]);\n var res = [];\n if (temp[parseInt(t.toString(), 10)].hasChildRecords) {\n res = pagedResults.filter(function (e) {\n return temp[parseInt(t.toString(), 10)].uniqueID === e.parentUniqueID;\n });\n newResults = this_1.pageRoot(pagedResults, res, newResults);\n }\n };\n var this_1 = this;\n for (var t = 0; t < temp.length; t++) {\n _loop_1(t);\n }\n return newResults;\n };\n Page.prototype.updatePageSize = function (pageingDetails) {\n var updateSize = pageingDetails.result.length;\n var gridPagerModule = this.parent.grid.pagerModule;\n if (this.parent.pageSettings.pageSizes === true) {\n if (gridPagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === gridPagerModule.pagerObj.getLocalizedLabel('All')) {\n gridPagerModule['pagerObj'].totalRecordsCount = updateSize;\n this.parent.grid.pageSettings.pageSize = updateSize;\n }\n }\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && ((this.parent.searchSettings.key !== this.parent.grid.searchSettings.key) ||\n (this.parent.filterSettings.columns.length !== this.parent.grid.filterSettings.columns.length))) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n this.updatePageSize(pageingDetails);\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.rowDeselected, this.refreshToolbar, this);\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowSelected, this.refreshToolbar);\n this.parent.off(events.rowDeselected, this.refreshToolbar);\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var toolbarElement = this.parent.grid.toolbarModule.getToolbar();\n if (!isNullOrUndefined(toolbarElement)) {\n var tObj = this.parent;\n var indentElement = void 0;\n var outdentElement = void 0;\n var indentID = tObj.element.id + '_gridcontrol_indent';\n var outdentID = tObj.element.id + '_gridcontrol_outdent';\n var indentEle = toolbarElement.querySelector('#' + indentID);\n var outdentEle = toolbarElement.querySelector('#' + outdentID);\n var row = args.row;\n var selectedrow = tObj.getSelectedRows()[0];\n if (!isNullOrUndefined(row[0])) {\n row = row[0];\n }\n row = (!isNullOrUndefined(selectedrow) && selectedrow.rowIndex !== row.rowIndex) ? selectedrow : row;\n if (indentEle !== null && outdentEle !== null) {\n indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n if (row.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[row.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[row.rowIndex - 1].level)) {\n indentElement.classList.add('e-hidden');\n }\n else {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === tObj.getCurrentViewRecords()[row.rowIndex - 1].level) {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === 0) {\n outdentElement.classList.add('e-hidden');\n }\n if (selectedItem.level !== 0) {\n outdentElement.classList.remove('e-hidden');\n }\n }\n }\n if (args['name'] === 'rowDeselected' && isNullOrUndefined(selectedrow) && !tObj.grid.isCheckBoxSelection) {\n if (this.parent.toolbar['includes']('Indent')) {\n indentElement.classList.add('e-hidden');\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n outdentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var indentOutdentAction = 'indentOutdentAction';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[\"\" + indentOutdentAction](null, 'indent');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[\"\" + indentOutdentAction](null, 'outdent');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[parseInt(p.toString(), 10)]);\n if (!summaryRow) {\n parentData.push(filteredData[parseInt(p.toString(), 10)]);\n }\n }\n var parentRecords = findParentRecords(parentData);\n var flatRecords = parentData.slice();\n var summaryLength = Object.keys(this.parent.aggregates).length;\n var dataLength = Object.keys(parentRecords).length;\n var childRecordsLength;\n var columns = this.parent.getColumns();\n if (this.parent.aggregates.filter(function (x) { return x.showChildSummary; }).length) {\n for (var i = 0, len = dataLength; i < len; i++) {\n parentRecord = parentRecords[parseInt(i.toString(), 10)];\n childRecordsLength = this.getChildRecordsLength(parentRecord, flatRecords);\n if (childRecordsLength) {\n var _loop_1 = function (summaryRowIndex, len_1) {\n var item = void 0;\n item = {};\n for (var i_1 = 0; i_1 < columns.length; i_1++) {\n var field = (isNullOrUndefined(getObject('field', columns[parseInt(i_1.toString(), 10)]))) ?\n columns[parseInt(i_1.toString(), 10)] : getObject('field', (columns[parseInt(i_1.toString(), 10)]));\n item[\"\" + field] = null;\n }\n item = this_1.createSummaryItem(item, this_1.parent.aggregates[summaryRowIndex - 1]);\n if (this_1.parent.aggregates[summaryRowIndex - 1].showChildSummary) {\n var idx_1;\n flatRecords.map(function (e, i) {\n if (e.uniqueID === parentRecord.uniqueID) {\n idx_1 = i;\n return;\n }\n });\n var currentIndex = idx_1 + childRecordsLength + summaryRowIndex;\n var summaryParent = extend({}, parentRecord);\n delete summaryParent.childRecords;\n delete summaryParent[this_1.parent.childMapping];\n setValue('parentItem', summaryParent, item);\n var level = getObject('level', summaryParent);\n setValue('level', level + 1, item);\n setValue('isSummaryRow', true, item);\n setValue('parentUniqueID', summaryParent.uniqueID, item);\n if (isSort) {\n var childRecords = getObject('childRecords', parentRecord);\n if (childRecords.length) {\n childRecords.push(item);\n }\n }\n flatRecords.splice(currentIndex, 0, item);\n }\n else {\n return \"continue\";\n }\n };\n var this_1 = this;\n for (var summaryRowIndex = 1, len_1 = summaryLength; summaryRowIndex <= len_1; summaryRowIndex++) {\n _loop_1(summaryRowIndex, len_1);\n }\n this.flatChildRecords = [];\n }\n }\n }\n else {\n var items = {};\n for (var columnIndex = 0, length_1 = columns.length; columnIndex < length_1; columnIndex++) {\n var fields = isNullOrUndefined(getObject('field', columns[parseInt(columnIndex.toString(), 10)])) ?\n columns[parseInt(columnIndex.toString(), 10)] : getObject('field', columns[parseInt(columnIndex.toString(), 10)]);\n items[\"\" + fields] = null;\n }\n for (var summaryRowIndex = 1, length_2 = summaryLength; summaryRowIndex <= length_2; summaryRowIndex++) {\n this.createSummaryItem(items, this.parent.aggregates[summaryRowIndex - 1]);\n }\n }\n return flatRecords;\n };\n Aggregate.prototype.getChildRecordsLength = function (parentData, flatData) {\n var recordLength = Object.keys(flatData).length;\n var record;\n for (var i = 0, len = recordLength; i < len; i++) {\n record = flatData[parseInt(i.toString(), 10)];\n var parent_1 = isNullOrUndefined(record.parentItem) ? null :\n flatData.filter(function (e) { return e.uniqueID === record.parentItem.uniqueID; })[0];\n if (parentData === parent_1) {\n this.flatChildRecords.push(record);\n var hasChild = getObject('hasChildRecords', record);\n if (hasChild) {\n this.getChildRecordsLength(record, flatData);\n }\n else {\n continue;\n }\n }\n }\n return this.flatChildRecords.length;\n };\n Aggregate.prototype.createSummaryItem = function (itemData, summary) {\n var summaryColumnLength = Object.keys(summary.columns).length;\n for (var i = 0, len = summaryColumnLength; i < len; i++) {\n var displayColumn = isNullOrUndefined(summary.columns[parseInt(i.toString(), 10)].columnName) ?\n summary.columns[parseInt(i.toString(), 10)].field : summary.columns[parseInt(i.toString(), 10)].columnName;\n var keys = Object.keys(itemData);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === displayColumn) {\n if (this.flatChildRecords.length) {\n itemData[\"\" + key] = this.getSummaryValues(summary.columns[parseInt(i.toString(), 10)], this.flatChildRecords);\n }\n else if (this.parent.isLocalData) {\n var data = this.parent.dataSource instanceof DataManager ? this.parent.dataSource.dataSource.json\n : this.parent.flatData;\n itemData[\"\" + key] = this.getSummaryValues(summary.columns[parseInt(i.toString(), 10)], data);\n }\n }\n else {\n continue;\n }\n }\n }\n return itemData;\n };\n Aggregate.prototype.getSummaryValues = function (summaryColumn, summaryData) {\n var qry = new Query();\n var single = {};\n var helper = {};\n var type = !isNullOrUndefined(summaryColumn.field) ?\n this.parent.getColumnByField(summaryColumn.field).type : undefined;\n summaryColumn.setPropertiesSilent({ format: this.getFormatFromType(summaryColumn.format, type) });\n summaryColumn.setFormatter(this.parent.grid.locale);\n var formatFn = summaryColumn.getFormatter() || (function () { return function (a) { return a; }; })();\n summaryColumn.setTemplate(helper);\n var tempObj = summaryColumn.getTemplate(2);\n qry.queries = this.summaryQuery;\n qry.requiresCount();\n var sumData = new DataManager(summaryData).executeLocal(qry);\n var types = summaryColumn.type;\n var summaryKey;\n types = [summaryColumn.type];\n for (var i = 0; i < types.length; i++) {\n summaryKey = types[parseInt(i.toString(), 10)];\n var key = summaryColumn.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' ? getObject('aggregates', sumData) :\n calculateAggregate(types[parseInt(i.toString(), 10)], sumData, summaryColumn, this.parent);\n var disp = summaryColumn.columnName;\n var value_1 = types[parseInt(i.toString(), 10)] !== 'Custom' ? val[\"\" + key] : val;\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = value_1;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(value_1) : ' ';\n }\n helper.format = summaryColumn.getFormatter();\n var cellElement = createElement('td', {\n className: 'e-summary'\n });\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property, '', null, null, cellElement);\n this.parent[\"\" + renderReactTemplates]();\n }\n else {\n appendChildren(cellElement, tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property));\n }\n var value = single[\"\" + summaryColumn.columnName][\"\" + summaryKey];\n var summaryValue;\n if (cellElement.innerHTML.indexOf(value) === -1) {\n summaryValue = cellElement.innerHTML + value;\n return summaryValue;\n }\n else {\n return cellElement.innerHTML;\n }\n };\n Aggregate.prototype.getFormatFromType = function (summaryformat, type) {\n if (isNullOrUndefined(type) || typeof summaryformat !== 'string') {\n return summaryformat;\n }\n var obj;\n switch (type) {\n case 'number':\n obj = { format: summaryformat };\n break;\n case 'datetime':\n obj = { type: 'dateTime', skeleton: summaryformat };\n break;\n case 'date':\n obj = { type: type, skeleton: summaryformat };\n break;\n }\n return obj;\n };\n /**\n * To destroy the Aggregate module\n *\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Aggregate;\n}());\nexport { Aggregate };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Sort as GridSort, Grid, getActualProperties } from '@syncfusion/ej2-grids';\nimport { getParentData } from '../utils';\n/**\n * Internal dataoperations for TreeGrid\n *\n * @hidden\n */\nvar Sort = /** @class */ (function () {\n function Sort(grid) {\n Grid.Inject(GridSort);\n this.parent = grid;\n this.taskIds = [];\n this.flatSortedData = [];\n this.storedIndex = -1;\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Sort module name\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n this.parent.on('createSort', this.createdSortedRecords, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n this.parent.off('createSort', this.createdSortedRecords);\n };\n Sort.prototype.createdSortedRecords = function (sortParams) {\n var data = sortParams.modifiedData;\n var srtQry = sortParams.srtQry;\n this.iterateSort(data, srtQry);\n this.storedIndex = -1;\n sortParams.modifiedData = this.flatSortedData;\n this.flatSortedData = [];\n };\n Sort.prototype.iterateSort = function (data, srtQry) {\n for (var d = 0; d < data.length; d++) {\n if (this.parent.grid.filterSettings.columns.length > 0 || this.parent.grid.searchSettings.key !== '') {\n if (!isNullOrUndefined(getParentData(this.parent, data[parseInt(d.toString(), 10)].uniqueID, true))) {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[parseInt(d.toString(), 10)];\n }\n }\n else {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[parseInt(d.toString(), 10)];\n }\n if (data[parseInt(d.toString(), 10)].hasChildRecords) {\n var childSort = (new DataManager(data[parseInt(d.toString(), 10)].childRecords)\n .executeLocal(srtQry));\n if (this.parent.allowRowDragAndDrop && data[parseInt(d.toString(), 10)].childRecords.indexOf(this.parent.rowDragAndDropModule['draggedRecord']) !== -1 && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n childSort.splice(dragdIndex, 1);\n var dropdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n childSort.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n childSort.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { Grid, ContextMenu as cmenu } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, select } from '@syncfusion/ej2-base';\n/**\n * ContextMenu Module for TreeGrid\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent) {\n Grid.Inject(cmenu);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on('contextMenuOpen', this.contextMenuOpen, this);\n this.parent.on('contextMenuClick', this.contextMenuClick, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('contextMenuOpen', this.contextMenuOpen);\n this.parent.off('contextMenuClick', this.contextMenuClick);\n };\n ContextMenu.prototype.contextMenuOpen = function (args) {\n var addRow = select('#' + this.parent.element.id + '_gridcontrol_cmenu_AddRow', args.element);\n var editRecord = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Edit', args.element);\n var indent = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Indent', args.element);\n var outdent = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Outdent', args.element);\n if (addRow) {\n if (this.parent.grid.editSettings.allowAdding === false || this.parent.grid.isEdit) {\n addRow.style.display = 'none';\n }\n else {\n addRow.style.display = 'block';\n }\n }\n if ((this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch')\n && !(isNullOrUndefined(editRecord)) && !(editRecord.classList.contains('e-menu-hide'))) {\n editRecord.style.display = 'none';\n }\n var tObj = this.parent;\n var selectedrow = tObj.getSelectedRows()[0];\n if ((indent || outdent) && !isNullOrUndefined(selectedrow)) {\n var targetElement = args.event.target.closest('td');\n if (isNullOrUndefined(targetElement) || (!isNullOrUndefined(targetElement) && !targetElement.classList.contains('e-rowcell'))) {\n indent.style.display = outdent.style.display = 'none';\n }\n else {\n if (selectedrow.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indent.style.display = outdent.style.display = 'none';\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[selectedrow.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[selectedrow.rowIndex - 1].level) || this.parent.editSettings.mode === 'Batch'\n || this.parent.editSettings.mode === 'Cell') {\n indent.style.display = 'none';\n }\n else {\n indent.style.display = 'block';\n }\n if ((selectedItem.level === tObj.getCurrentViewRecords()[selectedrow.rowIndex - 1].level) && this.parent.editSettings.mode !== 'Batch'\n && this.parent.editSettings.mode !== 'Cell') {\n indent.style.display = 'block';\n }\n if ((selectedItem.level === 0) || this.parent.editSettings.mode === 'Batch'\n || this.parent.editSettings.mode === 'Cell') {\n outdent.style.display = 'none';\n }\n else {\n outdent.style.display = 'block';\n }\n }\n }\n }\n }\n else {\n if (tObj.grid.isEdit && isNullOrUndefined(selectedrow)) {\n indent.style.display = 'none';\n outdent.style.display = 'none';\n }\n }\n };\n ContextMenu.prototype.contextMenuClick = function (args) {\n if (args.item.id === 'Above' || args.item.id === 'Below' || args.item.id === 'Child') {\n this.parent.notify('savePreviousRowPosition', args);\n this.parent.setProperties({ editSettings: { newRowPosition: args.item.id } }, true);\n this.parent.editModule['isAddedRowByContextMenu'] = true;\n this.parent.addRecord();\n }\n if (args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Indent' || args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Outdent') {\n if (!isNullOrUndefined(this.parent.rowDragAndDropModule)) {\n var indentOutdentAction = 'indentOutdentAction';\n var action = args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Indent' ? 'indent' : 'outdent';\n this.parent.rowDragAndDropModule[\"\" + indentOutdentAction](null, action);\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ContextMenu module name\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Gets the context menu element from the TreeGrid.\n *\n * @returns {Element} Return Context Menu root element.\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.parent.grid.contextMenuModule.getContextMenu();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend, setValue, getValue, merge } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\nimport { classList } from '@syncfusion/ej2-base';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[\"\" + primaryKey]; }).indexOf(this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.cell.cellIndex;\n var frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();\n if (frozenCols && args.columnObject.index > frozenCols) {\n actualCellIndex = actualCellIndex + frozenCols;\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n var colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;\n if (colCount === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n }\n else if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + parentItem]) {\n parentUniqueID = this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + parentItem][\"\" + uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[parseInt(rowObjectIndex.toString(), 10)].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[\"\" + primaryKey_1]; }).indexOf(record[\"\" + primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[parseInt(this.addRowIndex.toString(), 10)][\"\" + level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[\"\" + primaryKey_1]; }).indexOf(record[\"\" + primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[\"\" + primaryKey_1]; }).indexOf(record[\"\" + primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[parseInt(rowObjectIndex.toString(), 10)].data = added;\n this.newBatchRowAdded = false;\n }\n if (this.parent.frozenColumns || this.parent.getFrozenColumns()\n && this.parent.grid.getRowsObject()[parseInt(rowObjectIndex.toString(), 10)].edit === 'add') {\n merge(this.currentViewRecords[parseInt(rowObjectIndex.toString(), 10)], this.parent.grid.getRowsObject()[parseInt(rowObjectIndex.toString(), 10)].changes);\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[\"\" + isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[\"\" + isTabLastRow] = false;\n return;\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) &&\n !this.parent.editModule['isAddedRowByContextMenu'] && (this.parent.grid.selectedRowIndex === -1 || this.parent.editModule['batchEditModule'].isAdd)) {\n this.selectedIndex = this.parent.editModule['selectedIndex'];\n this.addRowIndex = this.parent.editModule['addRowIndex'];\n this.addRowRecord = this.batchRecords.length ? this.batchRecords[this.selectedIndex]\n : this.parent.getCurrentViewRecords()[this.selectedIndex];\n }\n else {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.parent.editModule['addRowIndex'] = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex'])) {\n classList(this.parent.grid.getDataRows()[0], ['e-batchrow'], []);\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n var newlyAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var index = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[newlyAddedRecords.length - 1].getAttribute('data-rowindex'), 10);\n this.batchRecords.splice(index, 0, newlyAddedRecords[newlyAddedRecords.length - 1]);\n }\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('data-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[parseInt(i.toString(), 10)]);\n if (this.parent.frozenRows || this.parent.frozenColumns || this.parent.getFrozenColumns()) {\n row.push(this.parent.grid.getMovableRows()[parseInt(i.toString(), 10)]);\n }\n }\n }\n if (!isNullOrUndefined(data.parentItem)) {\n var parentItem = getParentData(this.parent, data.parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(data);\n parentItem.childRecords.splice(childIndex, 1);\n }\n this.batchDeletedRecords = extendArray(this.batchDeletedRecords);\n this.batchDeletedRecords.push(data);\n }\n childs.push(data);\n records = childs;\n for (var i = 0; i < records.length; i++) {\n var indexvalue = this.batchRecords.map(function (e) { return e[\"\" + primarykey]; }).indexOf(records[parseInt(i.toString(), 10)][\"\" + primarykey]);\n if (indexvalue !== -1) {\n this.batchRecords.splice(indexvalue, 1);\n }\n }\n for (var i = 0; i < row.length; i++) {\n if (!isNullOrUndefined(row[parseInt(i.toString(), 10)])) {\n this.parent.grid.selectionModule.selectedRecords.push(row[parseInt(i.toString(), 10)]);\n }\n }\n };\n BatchEdit.prototype.updateRowIndex = function () {\n var rows = this.parent.grid.getDataRows();\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].setAttribute('data-rowindex', i.toString());\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var mRows = this.parent.grid.getMovableDataRows();\n var freezeRightRows = this.parent.grid.getFrozenRightDataRows();\n for (var i = 0; i < mRows.length; i++) {\n mRows[parseInt(i.toString(), 10)].setAttribute('data-rowindex', i.toString());\n if (freeze) {\n freezeRightRows[parseInt(i.toString(), 10)].setAttribute('data-rowindex', i.toString());\n }\n }\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[\"\" + addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[\"\" + addedRecords][parseInt(i.toString(), 10)][\"\" + parentItem])) {\n if (this.parent.getBatchChanges()[\"\" + addedRecords][parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primaryKey] === records[parseInt(this.addRowIndex.toString(), 10)][\"\" + primaryKey]) {\n this.batchChildCount = this.batchChildCount + 1;\n }\n }\n }\n };\n BatchEdit.prototype.beforeBatchSave = function (e) {\n var changeRecords = 'changedRecords';\n var deleterecords = 'deletedRecords';\n var changedRecords = e.batchChanges[\"\" + changeRecords];\n if (e.batchChanges[\"\" + changeRecords].length) {\n var columnName = void 0;\n for (var i = 0; i < changedRecords.length; i++) {\n editAction({ value: changedRecords[parseInt(i.toString(), 10)], action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName);\n }\n }\n if (e.batchChanges[\"\" + deleterecords].length) {\n var deletedRecords = e.batchChanges[\"\" + deleterecords];\n var record = deletedRecords;\n for (var i = 0; i < record.length; i++) {\n this.deleteUniqueID(record[parseInt(i.toString(), 10)].uniqueID);\n var childs = findChildrenRecords(record[parseInt(i.toString(), 10)]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[parseInt(c.toString(), 10)].uniqueID);\n }\n e.batchChanges[\"\" + deleterecords] = e.batchChanges[\"\" + deleterecords].concat(childs);\n }\n }\n this.isAdd = false;\n };\n BatchEdit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[\"\" + idFilter][\"\" + value];\n var id = 'uniqueIDCollection';\n delete this.parent[\"\" + id][\"\" + value];\n };\n BatchEdit.prototype.batchCancelAction = function () {\n var targetElement = 'targetElement';\n var index;\n var parentItem = 'parentItem';\n var indexvalue = 'index';\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var childRecords = 'childRecords';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (!isNullOrUndefined(this.batchAddedRecords)) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[\"\" + primaryKey]; }).indexOf(this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]);\n if (index !== -1) {\n data.splice(index, 1);\n }\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[\"\" + primaryKey]; })\n .indexOf(this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + parentItem] ? this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primaryKey]\n : this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[parseInt(index.toString(), 10)])) {\n var children = currentViewRecords[parseInt(index.toString(), 10)][\"\" + childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[parseInt(j.toString(), 10)][\"\" + primaryKey] === this.batchAddedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]) {\n currentViewRecords[parseInt(index.toString(), 10)][\"\" + childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[\"\" + targetElement])) {\n var row = this.parent[\"\" + targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[\"\" + targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + parentItem])) {\n index = currentViewRecords.map(function (e) { return e[\"\" + primaryKey]; })\n .indexOf(this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primaryKey]);\n var positionIndex = this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + indexvalue] === 0 ? this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + indexvalue] :\n this.batchDeletedRecords[parseInt(i.toString(), 10)][\"\" + indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[parseInt(index.toString(), 10)])) {\n currentViewRecords[parseInt(index.toString(), 10)][\"\" + childRecords].splice(positionIndex, 0, this.batchDeletedRecords[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[\"\" + addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (this.parent.editModule['isAddedRowByMethod'] && addRecords.length && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n for (var i_1 = 0; i_1 < addRecords.length; i_1++) {\n var index_1 = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[parseInt(i_1.toString(), 10)].getAttribute('data-rowindex'), 10);\n data.splice(index_1, 0, addRecords[parseInt(i_1.toString(), 10)]);\n }\n }\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[\"\" + primarykey_1]; })\n .indexOf(currentViewRecords[0][\"\" + primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[parseInt(i.toString(), 10)]);\n delete taskData.parentItem;\n delete taskData.uniqueID;\n delete taskData.index;\n delete taskData.level;\n delete taskData.hasChildRecords;\n delete taskData.childRecords;\n delete taskData.parentUniqueID;\n if (!isNullOrUndefined(taskData.primaryParent)) {\n delete taskData.primaryParent;\n }\n if (addRecords.length > 1 && this.parent.editModule['isAddedRowByContextMenu']) {\n var rowPosition = this.parent.editSettings.newRowPosition;\n this.parent.editSettings.newRowPosition = this.parent.editModule['previousNewRowPosition'];\n this.parent.editModule['previousNewRowPosition'] = rowPosition;\n }\n addRecords[parseInt(i.toString(), 10)].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[parseInt(i.toString(), 10)].parentItem)) {\n updateParentRow(primarykey_1, addRecords[parseInt(i.toString(), 10)].parentItem, 'add', this.parent, this.isSelfReference, addRecords[parseInt(i.toString(), 10)]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[parseInt(i.toString(), 10)].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[parseInt(i.toString(), 10)], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[parseInt(i.toString(), 10)][\"\" + parentItem]) &&\n (isNullOrUndefined(this.parent.editModule['addRowIndex']) || this.isSelfReference)) {\n var indexValue = currentViewRecords.map(function (e) { return e[\"\" + primarykey_1]; })\n .indexOf(addRecords[parseInt(i.toString(), 10)][\"\" + parentItem][\"\" + primarykey_1]);\n var children = currentViewRecords[parseInt(indexValue.toString(), 10)][\"\" + childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[parseInt(j.toString(), 10)][\"\" + primarykey_1] === addRecords[parseInt(i.toString(), 10)][\"\" + primarykey_1]) {\n currentViewRecords[parseInt(indexValue.toString(), 10)][\"\" + childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[\"\" + deletedRecords].length) {\n for (i = 0; i < batchChanges[\"\" + deletedRecords].length; i++) {\n editAction({ value: batchChanges[\"\" + deletedRecords][parseInt(i.toString(), 10)], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_2 = 0; i_2 < data.length; i_2++) {\n data[parseInt(i_2.toString(), 10)][\"\" + index] = i_2;\n setValue('uniqueIDCollection.' + data[parseInt(i_2.toString(), 10)][\"\" + uniqueID] + '.index', i_2, this.parent);\n if (!data[parseInt(i_2.toString(), 10)][\"\" + level]) {\n this.parent.parentData.push(data[parseInt(i_2.toString(), 10)]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n this.parent.editModule['isAddedRowByContextMenu'] = false;\n }\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[parseInt(i.toString(), 10)][\"\" + index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n if (this.parent.getSelectedRows().length) {\n args[\"\" + index] = this.parent.getSelectedRows()[0][\"\" + rowIndex];\n }\n else {\n args[\"\" + index] = this.batchIndex;\n }\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n this.isAddedRowByContextMenu = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.dataRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)][treeObj.getPrimaryKeyFieldNames()[0]] : -1;\n treeObj.grid.query.addParams('relationalKey', keyData);\n }\n else if (eventName === 'actionComplete') {\n var paramsLength = treeObj.grid.query.params.length;\n for (var i = 0; i < paramsLength; i++) {\n if (treeObj.grid.query.params[parseInt(i.toString(), 10)].key === 'relationalKey') {\n treeObj.grid.query.params.splice(i);\n }\n }\n }\n }\n if (this.parent.enableInfiniteScrolling && eventName === 'actionComplete') {\n this.infiniteAddAction(eventArgs);\n }\n if (this.parent.editSettings.mode === 'Batch' && eventArgs.requestType === 'paging') {\n this.parent.notify('batchPageAction', {});\n }\n };\n Edit.prototype.infiniteAddAction = function (args) {\n if ((args.requestType === 'save' && args.action === 'add') || args.requestType === 'delete') {\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.selectedIndex !== -1\n && (args.requestType === 'save' && args.action === 'add')) {\n var rowObjects = this.parent.grid.getRowsObject();\n var newRowObject = rowObjects.splice(0, 1)[0];\n var newRowObjectIndex = this.addRowIndex;\n var currentData = this.parent.getCurrentViewRecords();\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n newRowObjectIndex += findChildrenRecords(currentData[newRowObjectIndex + 1]).length;\n }\n newRowObjectIndex = this.parent.editSettings.newRowPosition === 'Below' ? newRowObjectIndex + 1 : newRowObjectIndex;\n rowObjects.splice(newRowObjectIndex, 0, newRowObject);\n var newRecord = currentData.splice(0, 1)[0];\n currentData.splice(newRowObjectIndex, 0, newRecord);\n this.updateInfiniteCurrentViewData(newRecord, this.addRowIndex);\n }\n var movableRows = this.parent.grid.getMovableRows();\n var movableRowsObject = this.parent.grid.getMovableRowsObject();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (!isCache) {\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n }\n if (!isCache && this.parent.getFrozenColumns() > 0) {\n resetRowIndex(this.parent.grid, movableRowsObject, movableRows, 0);\n this.updateIndex(this.parent.grid.dataSource, movableRows, this.parent.getCurrentViewRecords());\n }\n }\n };\n Edit.prototype.updateInfiniteCurrentViewData = function (newRecord, newRowIndex) {\n var _this = this;\n var infiniteData = 'infiniteCurrentViewData';\n var updateCurrentViewData = 'updateCurrentViewData';\n var size = Math.ceil(newRowIndex / this.parent.grid.pageSettings.pageSize);\n var page = size > 0 ? size : 1;\n var dataIndex = newRowIndex - ((page - 1) * this.parent.pageSettings.pageSize);\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[\"\" + infiniteData];\n infiniteCurrentViewData[1].splice(0, 1);\n var data = infiniteCurrentViewData[parseInt(page.toString(), 10)];\n if (!isNullOrUndefined(this.addRowRecord)) {\n data.filter(function (e, index) {\n if (e.uniqueID === _this.addRowRecord.uniqueID) {\n dataIndex = index;\n }\n });\n if (this.addRowRecord.hasChildRecords && this.addRowRecord.childRecords.length &&\n this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n dataIndex += findChildrenRecords(this.addRowRecord).length;\n }\n }\n if (dataIndex >= this.parent.pageSettings.pageSize) {\n page += 1;\n data = infiniteCurrentViewData[parseInt(page.toString(), 10)];\n dataIndex = dataIndex - this.parent.pageSettings.pageSize >= 0 ? dataIndex - this.parent.pageSettings.pageSize : 0;\n }\n dataIndex = this.parent.editSettings.newRowPosition === 'Below' ? dataIndex + 1 : dataIndex;\n data.splice(dataIndex, 0, newRecord);\n this.parent.grid.infiniteScrollModule[\"\" + updateCurrentViewData]();\n };\n Edit.prototype.recordDoubleClick = function (args) {\n var target = args.target;\n if (isNullOrUndefined(target.closest('td.e-rowcell'))) {\n return;\n }\n if (!(this.parent.grid.editSettings.allowEditing) || this.parent.grid.isEdit) {\n return;\n }\n var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('data-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('data-rowindex');\n tr.setAttribute('data-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n else if (this.parent.editSettings.mode === 'Cell' && (!column.allowEditing || column.isPrimaryKey)) {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[\"\" + idFilter][\"\" + value];\n var id = 'uniqueIDCollection';\n delete this.parent[\"\" + id][\"\" + value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[\"\" + promise];\n delete args[\"\" + promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex) && this.prevAriaRowIndex !== '-1') {\n args.row.setAttribute('data-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['editedRowIndex'] = this.parent.grid.editModule.editModule['index'];\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEdit', false, this.parent.grid);\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[\"\" + editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else if (this.parent.getFrozenRightRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getFrozenRightRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getMovableRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getMovableRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[\"\" + eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['virtualData'] = {};\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n var mRow;\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {\n mRow = this.parent.grid.getRows()[parseInt(rowIndex.toString(), 10)];\n }\n else if (args.cell.closest('.e-movableheader') || args.cell.closest('.e-movablecontent')) {\n mRow = this.parent.grid.getMovableRows()[parseInt(rowIndex.toString(), 10)];\n }\n else {\n mRow = this.parent.grid.getFrozenRightRows()[parseInt(rowIndex.toString(), 10)];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n else if (this.parent.getFrozenColumns() > 0) {\n if (args.cell.closest('.e-frozenheader') || args.cell.closest('.e-frozencontent')) {\n mRow = this.parent.grid.getRows()[parseInt(rowIndex.toString(), 10)];\n }\n else {\n mRow = this.parent.grid.getMovableRows()[parseInt(rowIndex.toString(), 10)];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n removeClass([row], ['e-editedrow', 'e-batchrow']);\n removeClass(row.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n if (this.parent['isCellSaveFocus'] !== false) {\n this.parent.grid.focusModule.restoreFocus();\n }\n editAction({ value: args.rowData, action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, args.columnName);\n if ((row.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'enter') {\n this.keyPress = null;\n }\n var saveArgs = {\n type: 'save', column: this.parent.getColumnByField(args.columnName), data: args.rowData,\n previousData: args.previousValue, row: row, target: args.cell\n };\n if (this.parent.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n this.parent.grid.refresh();\n }\n this.parent.trigger(events.actionComplete, saveArgs);\n };\n Edit.prototype.lastCellTab = function () {\n if (!this.parent.grid.isEdit && this.isOnBatch && this.keyPress === 'tab' && this.parent.editSettings.mode === 'Cell') {\n if (!this.parent.editSettings.allowNextRowEdit) {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n this.keyPress = null;\n }\n else {\n this.enableToolbarItems('edit');\n }\n }\n };\n Edit.prototype.updateCell = function (args, rowIndex) {\n this.parent.grid.editModule.updateCell(rowIndex, args.columnName, args.rowData[args.columnName]);\n this.parent.grid.getRowsObject()[parseInt(rowIndex.toString(), 10)].data = args.rowData;\n };\n Edit.prototype.crudAction = function (details, columnName) {\n editAction(details, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName, this.addRowRecord);\n this.parent.parentData = [];\n var data = this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n data[parseInt(i.toString(), 10)].index = i;\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (details.value[\"\" + key] === data[parseInt(i.toString(), 10)][\"\" + key]) {\n if (details.action === 'add') {\n data[parseInt(i.toString(), 10)].level = this.internalProperties.level;\n data[parseInt(i.toString(), 10)].taskData = this.internalProperties.taskData;\n data[parseInt(i.toString(), 10)].uniqueID = this.internalProperties.uniqueID;\n if (!isNullOrUndefined(this.internalProperties.parentItem)) {\n data[parseInt(i.toString(), 10)].parentItem = this.internalProperties.parentItem;\n data[parseInt(i.toString(), 10)].parentUniqueID = this.internalProperties.parentUniqueID;\n }\n data[parseInt(i.toString(), 10)].childRecords = this.internalProperties.childRecords;\n }\n }\n setValue('uniqueIDCollection.' + data[parseInt(i.toString(), 10)].uniqueID + '.index', i, this.parent);\n var adaptor = this.parent.dataSource.adaptor;\n if ((isRemoteData(this.parent) || adaptor instanceof RemoteSaveAdaptor)) {\n setValue('uniqueIDCollection.' + data[parseInt(i.toString(), 10)].uniqueID, data[parseInt(i.toString(), 10)], this.parent);\n }\n if (!data[parseInt(i.toString(), 10)].level) {\n this.parent.parentData.push(data[parseInt(i.toString(), 10)]);\n }\n }\n if (!this.parent.enableInfiniteScrolling) {\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(data1)) {\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[parseInt(l.toString(), 10)].classList.contains('e-gridrowindex0level0')) {\n treeColIndex = l;\n break;\n }\n }\n }\n for (var k = 0; k < this.parent.getRows().length; k++) {\n if (!rows[parseInt(k.toString(), 10)].classList.contains('e-detailrow')) {\n count++;\n }\n var data2 = records[parseInt(count.toString(), 10)];\n if (!isNullOrUndefined(data2)) {\n var index = data2.index;\n var level = data2.level;\n var row = rows[parseInt(k.toString(), 10)];\n if (!isNullOrUndefined(data2.parentItem)) {\n index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);\n }\n var treecell = row.cells[parseInt(treeColIndex.toString(), 10)];\n if (!isNullOrUndefined(treecell)) {\n for (var l = 0; l < treecell.classList.length; l++) {\n var value = treecell.classList[parseInt(l.toString(), 10)];\n var remove = /e-gridrowindex/i;\n var removed = /e-griddetailrowindex/i;\n var result = value.match(remove);\n var results = value.match(removed);\n if (result != null) {\n removeClass([treecell], value);\n }\n if (results != null) {\n removeClass([treecell], value);\n }\n }\n if (!rows[parseInt(k.toString(), 10)].classList.contains('e-detailrow')) {\n addClass([treecell], 'e-gridrowindex' + index + 'level' + level);\n }\n else {\n addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);\n }\n }\n }\n }\n };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[parseInt(index.toString(), 10)]) &&\n records[parseInt(index.toString(), 10)].expanded) {\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n index += findChildrenRecords(records[parseInt(index.toString(), 10)]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.batchEditModule.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(records[parseInt(index.toString(), 10)]).length;\n }\n }\n }\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange\n && (index || (this.parent.editSettings.newRowPosition === 'Child'\n || this.parent.editSettings.newRowPosition === 'Below'))) {\n if (index >= rows.length - 1) {\n index = rows.length - 2;\n }\n var r = 'rows';\n var newRowObject = this.parent.grid.contentModule[\"\" + r][0];\n var focussedElement = document.activeElement;\n rows[index + 1][\"\" + position](rows[0]);\n setValue('batchIndex', index + 1, this.batchEditModule);\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Above' ? index : index + 1;\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[\"\" + r].splice(0, 1);\n this.parent.grid.contentModule[\"\" + r].splice(rowObjectIndex, 0, newRowObject);\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var movableRows = this.parent.getMovableDataRows();\n var frows = 'freezeRows';\n var newFreezeRowObject = this.parent.grid.getRowsObject()[0];\n movableRows[index + 1][\"\" + position](movableRows[0]);\n if (freeze) {\n var rightFrozenRows = this.parent.getFrozenRightDataRows();\n rightFrozenRows[index + 1][\"\" + position](rightFrozenRows[0]);\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[\"\" + frows].splice(0, 1);\n this.parent.grid.contentModule[\"\" + frows].splice(rowObjectIndex, 0, newFreezeRowObject);\n }\n setValue('batchIndex', index + 1, this.batchEditModule);\n }\n if (this.parent.editSettings.mode === 'Row' || this.parent.editSettings.mode === 'Cell') {\n var errors = this.parent.grid.getContentTable().querySelectorAll('.e-griderror');\n for (var i = 0; i < errors.length; i++) {\n errors[parseInt(i.toString(), 10)].remove();\n }\n setValue('errorRules', [], this.parent.grid.editModule.formObj);\n }\n if (isVirtualization) {\n this.prevAriaRowIndex = '-1';\n }\n if (!this.parent.enableVirtualization || this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n focussedElement.focus();\n }\n if (this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n this.parent.grid.contentModule['createEmptyRowdata']();\n }\n }\n }\n if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1 && this['isAddedRowByMethod'] && !this.isAddedRowByContextMenu) {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n var batchAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var newlyAddedRecord = void 0;\n if (batchAddedRecords.length) {\n for (var i = 0; i < batchAddedRecords.length; i++) {\n if (isNullOrUndefined(batchAddedRecords[parseInt(i.toString(), 10)].uniqueID)) {\n newlyAddedRecord = batchAddedRecords[parseInt(i.toString(), 10)];\n }\n }\n }\n var args = {\n action: 'add',\n data: newlyAddedRecord,\n index: index,\n seletedRow: 0\n };\n this.beginAddEdit(args);\n this.batchEditModule['batchAddRowRecord'].push(this.batchEditModule['addRowRecord']);\n this.batchEditModule['batchAddedRecords'].push(args['data']);\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[\"\" + primaryKeys_2[0]] === args.data[parseInt(i.toString(), 10)][primaryKeys_2[0]]) {\n data_1[parseInt(i.toString(), 10)] = e;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < data_1.length; i++) {\n _loop_1(i);\n }\n }\n for (var i = 0; i < data_1.length; i++) {\n this.deleteUniqueID(data_1[parseInt(i.toString(), 10)].uniqueID);\n var childs = findChildrenRecords(data_1[parseInt(i.toString(), 10)]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[parseInt(c.toString(), 10)].uniqueID);\n }\n args.data = args.data.concat(childs);\n }\n }\n if (args.requestType === 'add' || (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling))) {\n if (!(this.parent.grid.selectedRowIndex === -1 && this.isAddedRowByMethod)\n && args.index === this.parent.grid.selectedRowIndex || args.index === 0) {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n }\n if (this.parent.enableVirtualization) {\n var selector = '.e-row[data-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[data-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n if (args.index !== 0) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex;\n }\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[this.parent.grid.selectedRowIndex];\n if (this.parent.enableVirtualization && this.isAddedRowByContextMenu) {\n this.addRowRecord = this.parent.getCurrentViewRecords()[this.addRowIndex];\n }\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' && isNullOrUndefined(this.addRowRecord)\n && !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = void 0;\n if (this.parent.enableVirtualization && args.index !== 0) {\n currentData = this.parent.flatData;\n }\n else if (this.parent.editSettings.mode === 'Batch' && this['isAddedRowByMethod'] && !isNullOrUndefined(this.addRowIndex)) {\n currentData = this.batchEditModule['batchRecords'];\n }\n else {\n currentData = this.parent.grid.getCurrentViewRecords();\n }\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.flatData.indexOf(this.addRowRecord);\n this.selectedIndex = this.addRowIndex;\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? currentData.indexOf(currentData[0]) : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.parent.enableVirtualization && args.index !== 0 ? true :\n this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n if (!this.parent.isLocalData && this.parent.editModule.selectedIndex === -1) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = null;\n }\n else {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n }\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[parseInt(i.toString(), 10)].parentItem) {\n var parentItem = getParentData(this.parent, deletedValues[parseInt(i.toString(), 10)].parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(deletedValues[parseInt(i.toString(), 10)]);\n parentItem.childRecords.splice(childIndex, 1);\n }\n }\n }\n }\n return args;\n };\n /**\n * If the data,index and position given, Adds the record to treegrid rows otherwise it will create edit form.\n *\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index, position) {\n if (this.parent.editSettings.newRowPosition === this.previousNewRowPosition || this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n if (!this.isSelfReference && !isNullOrUndefined(data) && Object.hasOwnProperty.call(data, this.parent.childMapping)) {\n var addRecords = [];\n var previousEditMode = this.parent.editSettings.mode;\n var previousGridEditMode = this.parent.grid.editSettings.mode;\n addRecords.push(data);\n this.parent.setProperties({ editSettings: { mode: 'Batch' } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: 'Batch' } }, true);\n if (!isNullOrUndefined(position)) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n var updatedRecords = { addedRecords: addRecords, changedRecords: [], deletedRecords: [] };\n this.parent.notify(events.batchSave, { updatedRecords: updatedRecords, index: index });\n this.parent.setProperties({ editSettings: { mode: previousEditMode } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: previousGridEditMode } }, true);\n this.parent.refresh();\n }\n else {\n if (data) {\n if (index > -1) {\n this.selectedIndex = index;\n this.addRowIndex = index;\n }\n else {\n this.selectedIndex = this.parent.selectedRowIndex;\n this.addRowIndex = this.parent.selectedRowIndex;\n }\n if (position) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n this.parent.grid.editModule.addRecord(data, index);\n }\n else {\n this.parent.grid.editModule.addRecord(data, index);\n }\n }\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} Returns form validation results\n */\n Edit.prototype.editFormValidate = function () {\n return this.parent.grid.editModule.editFormValidate();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.destroyForm = function () {\n this.parent.grid.editModule.destroyForm();\n };\n Edit.prototype.contentready = function (e) {\n if (!isNullOrUndefined(e.args.requestType)\n && (e.args.requestType.toString() === 'delete' || e.args.requestType.toString() === 'save'\n || (this.parent.editSettings.mode === 'Batch' && e.args.requestType.toString() === 'batchsave'))) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns) {\n if (this.parent.grid.dataSource.length === this.parent.getMovableDataRows().length) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getMovableDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n }\n };\n /**\n * If the row index and field is given, edits the particular cell in a row.\n *\n * @returns {void}\n */\n Edit.prototype.editCell = function (rowIndex, field) {\n if (this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch') {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n this.parent.grid.editModule.editCell(rowIndex, field);\n }\n };\n return Edit;\n}());\nexport { Edit };\n","import { Grid, CommandColumn as Command } from '@syncfusion/ej2-grids';\n/**\n * Command Column Module for TreeGrid\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent) {\n Grid.Inject(Command);\n this.parent = parent;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns CommandColumn module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n //this.removeEventListener();\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","import { Grid, getObject } from '@syncfusion/ej2-grids';\nimport { DetailRow as detailrow } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isRemoteData } from '../utils';\n/**\n * TreeGrid Detail Row module\n *\n * @hidden\n */\nvar DetailRow = /** @class */ (function () {\n function DetailRow(parent) {\n Grid.Inject(detailrow);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns DetailRow module name\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n DetailRow.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.on('detaildataBound', this.detaildataBound, this);\n this.parent.grid.on('detail-indentcell-info', this.setIndentVisibility, this);\n this.parent.on('childRowExpand', this.childRowExpand, this);\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('actioncomplete', this.actioncomplete, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DetailRow.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.off('detaildataBound', this.detaildataBound);\n this.parent.off('childRowExpand', this.childRowExpand);\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('actioncomplete', this.actioncomplete);\n this.parent.grid.off('detail-indentcell-info', this.setIndentVisibility);\n };\n DetailRow.prototype.setIndentVisibility = function (args) {\n var visible = 'visible';\n args[\"\" + visible] = false;\n };\n DetailRow.prototype.dataBoundArg = function () {\n var detailele = this.parent.getRows().filter(function (e) {\n return !e.classList.contains('e-detailrow');\n });\n for (var i = 0; i < detailele.length; i++) {\n var elements = detailele[parseInt(i.toString(), 10)].getElementsByClassName('e-detailrowcollapse');\n var detailData = this.parent.grid.getRowObjectFromUID(detailele[parseInt(i.toString(), 10)].getAttribute('data-Uid'));\n var parentItem = getObject('parentItem', this.parent.grid.getCurrentViewRecords()[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(parentItem) || !isNullOrUndefined(parentItem) &&\n getExpandStatus(this.parent, detailData.data, this.parent.grid.getCurrentViewRecords())) {\n this.parent.grid.detailRowModule.expand(elements[0]);\n }\n }\n };\n DetailRow.prototype.childRowExpand = function (args) {\n var detailRowElement = args.row.getElementsByClassName('e-detailrowcollapse');\n if (!isNullOrUndefined(detailRowElement[0])) {\n this.parent.grid.detailRowModule.expand(detailRowElement[0]);\n }\n };\n DetailRow.prototype.rowExpandCollapse = function (args) {\n if (isRemoteData(this.parent)) {\n return;\n }\n for (var i = 0; i < args.detailrows.length; i++) {\n args.detailrows[parseInt(i.toString(), 10)].style.display = args.action;\n }\n };\n DetailRow.prototype.detaildataBound = function (args) {\n var data = args.data;\n var row = args.detailElement.parentElement.previousSibling;\n var index = !isNullOrUndefined(data.parentItem) ? data.parentItem.index : data.index;\n var expandClass = 'e-gridrowindex' + index + 'level' + data.level;\n var classlist = row.querySelector('.' + expandClass).classList;\n var gridClas = [].slice.call(classlist).filter(function (gridclass) { return (gridclass === expandClass); });\n var newNo = gridClas[0].length;\n var slicedclas = gridClas.toString().slice(6, newNo);\n var detailClass = 'e-griddetail' + slicedclas;\n addClass([args.detailElement.parentElement], detailClass);\n };\n DetailRow.prototype.actioncomplete = function (args) {\n if (args.requestType === 'beginEdit' || args.requestType === 'add') {\n var spann = (args.row.querySelectorAll('.e-editcell')[0].getAttribute('colSpan'));\n var colum = parseInt(spann, 10) - 1;\n var updtdcolum = colum.toString();\n args.row.querySelectorAll('.e-editcell')[0].setAttribute('colSpan', updtdcolum);\n }\n var focusElement = this.parent.grid.contentModule.getRows();\n for (var i = 0; i < focusElement.length; i++) {\n focusElement[parseInt(i.toString(), 10)].cells[0].visible = false;\n }\n var focusModule = getObject('focusModule', this.parent.grid);\n var matrix = 'refreshMatrix';\n focusModule[\"\" + matrix](true)({ rows: this.parent.grid.contentModule.getRows() });\n };\n /**\n * Destroys the DetailModule.\n *\n * @function destroy\n * @returns {void}\n */\n DetailRow.prototype.destroy = function () {\n this.removeEventListener();\n };\n return DetailRow;\n}());\nexport { DetailRow };\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})();\nimport { Cell, CellType } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '@syncfusion/ej2-grids';\nimport * as literals from '../base/constant';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('data-rowindex'), 10) === index; })[0];\n };\n VirtualTreeContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualTreeContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualTreeContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.dataRowIndex), 10);\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[parseInt(index.toString(), 10)]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ?\n this.parent.getRowsObject()[parseInt(index.toString(), 10)].data : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if (this.recordAdded && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else if (this.parent.root.editSettings.newRowPosition !== 'Top' && this.parent.root.editModule.selectedIndex !== -1 || this.parent.root.editModule.selectedIndex !== -1) {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[\"\" + action]('data-ready', this.onDataReady, this);\n this.parent[\"\" + action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction(), _this.parent);\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[\"\" + action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[\"\" + action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[\"\" + action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[\"\" + action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[\"\" + action]('edit-reset', this.resetIseditValue, this);\n this.parent[\"\" + action]('get-virtual-data', this.getData, this);\n this.parent[\"\" + action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[\"\" + action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[\"\" + action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[\"\" + action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[\"\" + virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n // To overcome the white space issue in last page when records collapsed\n if (this.parent.isFrozenGrid() && e.count < Object.keys(this.parent.dataSource).length) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length - 1) + 'px' : '100%';\n var height = (this.parent.getRowHeight() * e.count) -\n (this.parent.getRowHeight() * this.parent.pageSettings.pageSize);\n getValue('virtualEle', this).setVirtualHeight(height, width);\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.isFrozenGrid()) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || (this.isDataSourceChanged && (this.startIndex === -1 || this.startIndex === 0 && this['preStartIndex'] === 0))) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (!isNullOrUndefined(this.parent.getRowByIndex(0)) && this.parent.getRows().length && !this[\"\" + initialRowTop]) {\n var rowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top;\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (rowTop > 0) {\n this[\"\" + initialRowTop] = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n else {\n this[\"\" + initialRowTop] = this.content.getBoundingClientRect().top -\n this.parent.getRowByIndex(0).getBoundingClientRect().height;\n }\n }\n _super.prototype[\"\" + dataBoundEve].call(this);\n };\n VirtualTreeContentRenderer.prototype.rowSelectedEvent = function (args) {\n var rowSelected = 'rowSelected';\n _super.prototype[\"\" + rowSelected].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectVirtualRow = function (args) {\n if (this.parent.isEdit) {\n return;\n }\n var selectVirtualRow = 'selectVirtualRow';\n var containerRect = 'containerRect';\n if (isNullOrUndefined(this.observer[\"\" + containerRect])) {\n this.observer[\"\" + containerRect] = this.observers[\"\" + containerRect];\n }\n if (isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule) || args.selectedIndex !== 0 ||\n isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule['addRowIndex'])) {\n _super.prototype[\"\" + selectVirtualRow].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.refreshCell = function (rowObj) {\n rowObj.cells = this.generateCells();\n };\n VirtualTreeContentRenderer.prototype.generateCells = function () {\n var cells = [];\n for (var i = 0; i < this.parent.columns.length; i++) {\n cells.push(this.generateCell(this.parent.columns[parseInt(i.toString(), 10)]));\n }\n return cells;\n };\n VirtualTreeContentRenderer.prototype.generateCell = function (col, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': col.visible,\n 'isDataCell': !isNullOrUndefined(col.field || col.template),\n 'isTemplate': !isNullOrUndefined(col.template),\n 'rowID': rowId,\n 'column': col,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': col.commands,\n 'isForeignKey': col.isForeignColumn && col.isForeignColumn(),\n 'foreignKeyData': col.isForeignColumn && col.isForeignColumn() && getValue(col.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n VirtualTreeContentRenderer.prototype.beginEdit = function (e) {\n this['editedRowIndex'] = e.index;\n var selector = '.e-row[data-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n e.data = rowData;\n };\n VirtualTreeContentRenderer.prototype.beginAdd = function (args) {\n var addAction = 'addActionBegin';\n var isAdd = 'isAdd';\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = addArgs.dataRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[\"\" + isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[\"\" + addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[\"\" + restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[\"\" + isAdd]) {\n _super.prototype[\"\" + resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[\"\" + isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[\"\" + editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[\"\" + selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[\"\" + isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.editModule.addRecord(null, this.parent.root.editModule.selectedIndex);\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[\"\" + getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = this.parent.root.editModule.selectedIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[\"\" + actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[\"\" + directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[\"\" + preventEvent] && !_this.parent.enableVirtualMaskRow) {\n _this.parent.showSpinner();\n }\n if (_this.parent.enableVirtualMaskRow && !_this[\"\" + preventEvent]) {\n setTimeout(function () {\n _this.parent.showMaskRow(current.axis);\n _this.parent.notify('showGanttShimmer', { requestType: 'showShimmer' });\n }, 0);\n }\n var height = _this.content.getBoundingClientRect().height;\n var top_1 = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var xAxis = current.axis === 'X';\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0]\n - 1);\n if (xAxis) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n var y = _this.getTranslateY(e.top, height, xAxis && top_1 === e.top ? _this.prevInfo : undefined, true);\n if (!_this.parent.isFrozenGrid() || _this.parent.enableVirtualMaskRow) {\n if (_this.parent.enableVirtualMaskRow) {\n var upScroll = (e.top - _this.translateY) < 0;\n y = (Math.round(_this.translateY) > y && !upScroll) ? Math.round(_this.translateY) : y;\n _this.virtualEle.adjustTable(x, y);\n }\n else {\n _this.virtualEle.adjustTable(x, _this.translateY);\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n this['scrollAfterEdit']();\n var info = scrollArgs.sentinel;\n var rowHeight = this.parent.getRowHeight();\n var outBuffer = this.parent.pageSettings.pageSize - Math.ceil(this.parent.pageSettings.pageSize / 2);\n var content = this.parent.getContent().querySelector('.e-content');\n var scrollHeight = outBuffer * rowHeight;\n var upScroll = (scrollArgs.offset.top - this.translateY) < 0;\n var downScroll = Math.ceil(scrollArgs.offset.top - this.translateY) + rowHeight >= scrollHeight;\n var selectedRowIndex = 'selectedRowIndex';\n var currentViewData = this.parent.currentViewData;\n var indexValue = 'index';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / rowHeight)\n + Math.ceil(vHeight / rowHeight))\n - this.parent.pageSettings.pageSize;\n index = (index > 0) ? index : 0;\n if (!isNullOrUndefined(this[\"\" + selectedRowIndex]) && this[\"\" + selectedRowIndex] !== -1 && index !== this[\"\" + selectedRowIndex]) {\n index = this[\"\" + selectedRowIndex];\n }\n this.startIndex = index;\n this.endIndex = index + this.parent.pageSettings.pageSize;\n if (this.endIndex > this.totalRecords) {\n var lastInx = this.totalRecords - 1;\n var remains = this.endIndex % lastInx;\n this.endIndex = lastInx;\n this.startIndex = (this.startIndex - remains) < 0 ? 0 : (this.startIndex - remains);\n }\n if (currentViewData.length && (currentViewData[0][\"\" + indexValue] >= this.parent.pageSettings.pageSize / 2) &&\n ((currentViewData[0][\"\" + indexValue] - this.startIndex) < (this.parent.pageSettings.pageSize / 2))) {\n this.startIndex = currentViewData[0][\"\" + indexValue] - (this.parent.pageSettings.pageSize / 2);\n this.endIndex = this.startIndex + this.parent.pageSettings.pageSize;\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / rowHeight);\n rowPt = rowPt % this.parent.pageSettings.pageSize;\n var firsttdinx = 0;\n if (!isNullOrUndefined(this.parent.getRows()[parseInt(rowPt.toString(), 10)]) &&\n !isNullOrUndefined(this.parent.getContent().querySelectorAll('.e-content tr')[parseInt(rowPt.toString(), 10)])) {\n var attr = this.parent.getContent().querySelectorAll('.e-content tr')[parseInt(rowPt.toString(), 10)]\n .querySelector('td').getAttribute('index');\n firsttdinx = +attr; // this.parent.getContent().querySelector('.e-content tr').getAttribute('data-rowindex');\n }\n if (firsttdinx === 0) {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - rowHeight * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n else {\n this.translateY = (scrollArgs.offset.top - (outBuffer * rowHeight) > 0) ?\n scrollArgs.offset.top - (outBuffer * rowHeight) + 10 : 0;\n }\n }\n else if (downScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var nextSetResIndex = ~~(content.scrollTop / rowHeight);\n var isLastBlock = (this[\"\" + selectedRowIndex] + this.parent.pageSettings.pageSize) < this.totalRecords ? false : true;\n if (!isNullOrUndefined(this[\"\" + selectedRowIndex]) && this[\"\" + selectedRowIndex] !== -1 &&\n nextSetResIndex !== this[\"\" + selectedRowIndex] && !isLastBlock) {\n nextSetResIndex = this[\"\" + selectedRowIndex];\n }\n var lastIndex = nextSetResIndex + this.parent.pageSettings.pageSize;\n if (lastIndex > this.totalRecords) {\n lastIndex = nextSetResIndex +\n (this.totalRecords - nextSetResIndex);\n }\n this.startIndex = !isLastBlock ? lastIndex - this.parent.pageSettings.pageSize : nextSetResIndex;\n this.endIndex = lastIndex;\n if (currentViewData.length && this.startIndex > currentViewData[0][\"\" + indexValue] &&\n ((this.startIndex - currentViewData[0][\"\" + indexValue]) < (this.parent.pageSettings.pageSize / 2))) {\n this.startIndex = currentViewData[0][\"\" + indexValue] + (this.parent.pageSettings.pageSize / 2);\n }\n if (scrollArgs.offset.top > (rowHeight * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - rowHeight * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (rowHeight * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left') ||\n ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') && (downScroll || upScroll) || isCountRequired(this.parent))) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n this.requestType = 'virtualscroll';\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n this.parent.notify('showGanttShimmer', { requestType: 'showShimmer' });\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n else {\n if (this.parent.enableVirtualMaskRow) {\n this.parent.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n }\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var isFrozen = this.parent.isFrozenGrid();\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent) || this.parent.isFrozenGrid()) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n if (isFrozen && ((isNullOrUndefined(this.requestType) && getValue('requestTypes', this).indexOf('isFrozen') === -1) ||\n (this.parent.enableVirtualMaskRow && this.requestType === 'virtualscroll'))) {\n getValue('requestTypes', this).push('isFrozen');\n this.requestType = 'isFrozen';\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n if (getValue('requestTypes', this).indexOf('isFrozen') !== -1) {\n getValue('requestTypes', this).splice(getValue('requestTypes', this).indexOf('isFrozen'), 1);\n this.requestType = this.requestType === 'isFrozen' ? undefined : this.requestType;\n }\n if (isFrozen && (!this.isExpandCollapse || this.translateY === 0)) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(0, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[\"\" + replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[\"\" + focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[\"\" + isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.dataRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[\"\" + isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[\"\" + restoreAdd].call(this);\n _super.prototype[\"\" + ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback, instance) {\n var containerRect = 'containerRect';\n _super.prototype[\"\" + containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n if (getValue('options', this).movableContainer) {\n var movableContainerRect = 'movableContainerRect';\n _super.prototype[\"\" + movableContainerRect] = getValue('options', this).movableContainer.getBoundingClientRect();\n EventHandler.add(getValue('options', this).movableContainer, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n }\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback, instance) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this[\"\" + options].prevTop = this[\"\" + options].prevLeft = 0;\n return function (e) {\n var top = _this[\"\" + options].movableContainer ? _this[\"\" + options].container.scrollTop : e.target.scrollTop;\n var left = _this[\"\" + options].movableContainer ? _this[\"\" + options].scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this[\"\" + options].prevTop < top ? 'down' : 'up';\n direction = _this[\"\" + options].prevLeft === left ? direction : _this[\"\" + options].prevLeft < left ? 'right' : 'left';\n _this[\"\" + options].prevTop = top;\n _this[\"\" + options].prevLeft = left;\n var current = _this.sentinelInfo[\"\" + direction];\n var delta = 0;\n _this.newPos = top;\n if (_this.lastPos != null) { // && newPos < maxScroll\n delta = _this.newPos - _this.lastPos;\n }\n _this.lastPos = _this.newPos;\n if (_this.timer) {\n clearTimeout(_this.timer);\n }\n _this.timer = setTimeout(_this.clear, 0);\n if ((delta > 100 || delta < -100) && (e && e.preventDefault)) {\n e.returnValue = false;\n e.preventDefault();\n }\n if (_this[\"\" + options].axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered && (current.axis === 'X' || instance.enableVirtualMaskRow)) {\n if (_this[\"\" + movableEle] && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this[\"\" + movableEle], current, direction, { top: top, left: left }, _this[\"\" + fromWheel], check);\n }\n else {\n onEnterCallback(_this[\"\" + element], current, direction, { top: top, left: left }, _this[\"\" + fromWheel], check);\n }\n }\n if (check) {\n var fn = debounced50;\n if (current.axis === 'X') {\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n if ((instance.dataSource instanceof DataManager && instance.dataSource.dataSource.url !== undefined\n && !instance.dataSource.dataSource.offline && instance.dataSource.dataSource.url !== '') || isCountRequired(instance)\n || instance.enableVirtualMaskRow) {\n fn = instance.enableVirtualMaskRow ? debounced100 : fn;\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n }\n }\n _this[\"\" + fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\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})();\nimport { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n if (this.parent.enableVirtualization && this.parent.selectionSettings.mode === 'Cell' ||\n this.parent.selectionSettings.mode === 'Row' && !this.parent.selectionSettings.persistSelection) {\n this.parent.grid.clearSelection();\n }\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' || requestType === 'searching' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length)) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else if (!this.parent['isExpandAll']) {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n startIndex = startIndex < 0 ? 0 : startIndex;\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (!parentGrid.isFrozenGrid()) {\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n //renderer.addRenderer(RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this)));\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parentGrid.height :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\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})();\nimport { ColumnFreezeContentRenderer, FreezeContentRender, FreezeRowModelGenerator, RenderType } from '@syncfusion/ej2-grids';\nimport * as literals from '../base/constant';\nimport { ColumnVirtualFreezeRenderer, setDebounce, VirtualFreezeHdrRenderer, VirtualFreezeRenderer } from '@syncfusion/ej2-grids';\nimport { TreeInterSectionObserver, VirtualTreeContentRenderer } from './virtual-tree-content-render';\nimport { getValue } from '@syncfusion/ej2-base';\n/**\n * VirtualTreeFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar VirtualTreeFreezeRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeFreezeRenderer, _super);\n function VirtualTreeFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.renderTable = function () {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualTreeContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n FreezeContentRender.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var movableCont = this.getMovableContent();\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualRenderer.virtualEle.movableContent = this.virtualRenderer.movableContent\n = this.getPanel().querySelector('.' + literals.movableContent);\n this.virtualRenderer.virtualEle.renderMovableWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderMovablePlaceHolder();\n var tbl = movableCont.querySelector('table');\n this.virtualRenderer.virtualEle.movableTable = tbl;\n this.virtualRenderer.virtualEle.movableWrapper.appendChild(tbl);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movableWrapper);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movablePlaceholder);\n }\n this.virtualRenderer.virtualEle.wrapper.appendChild(this.getFrozenContent());\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newChild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n getValue('observer', this.virtualRenderer).options.debounceEvent = false;\n this.virtualRenderer['observers'] = new TreeInterSectionObserver(getValue('observer', this.virtualRenderer).element, getValue('observer', this.virtualRenderer).options, getValue('observer', this.virtualRenderer).movableEle);\n this.virtualRenderer['contents'] = this.getPanel().firstChild;\n _super.prototype.appendContent.call(this, target, newChild, e);\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {Row<Column>[]} returns the row\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.generateRows = function (data, e) {\n return _super.prototype.generateRows.call(this, data, e);\n };\n return VirtualTreeFreezeRenderer;\n}(VirtualFreezeRenderer));\nexport { VirtualTreeFreezeRenderer };\n/**\n * ColumnVirtualTreeFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar ColumnVirtualTreeFreezeRenderer = /** @class */ (function (_super) {\n __extends(ColumnVirtualTreeFreezeRenderer, _super);\n function ColumnVirtualTreeFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.serviceLoc = locator;\n _this.eventListener('on');\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n ColumnVirtualTreeFreezeRenderer.prototype.renderTable = function () {\n this.virtualRenderer = new VirtualTreeContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n ColumnFreezeContentRenderer.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var frozenRightCont = this.getFrozenRightContent();\n var frzCont = this.getFrozenContent();\n var movableCont = this.getMovableContent();\n if (this.parent.getFrozenMode() === 'Right') {\n frzCont = frozenRightCont;\n }\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n _super.prototype['renderVirtualFrozenLeft'].call(this, frzCont, movableCont);\n _super.prototype['renderVirtualFrozenRight'].call(this, frzCont, movableCont);\n _super.prototype['renderVirtualFrozenLeftRight'].call(this, frzCont, movableCont, frozenRightCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n ColumnVirtualTreeFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n getValue('observer', this.virtualRenderer).options.debounceEvent = false;\n this.virtualRenderer['observers'] = new TreeInterSectionObserver(getValue('observer', this.virtualRenderer).element, getValue('observer', this.virtualRenderer).options, getValue('observer', this.virtualRenderer).movableEle);\n this.virtualRenderer['contents'] = this.getPanel().firstChild;\n _super.prototype.appendContent.call(this, target, newChild, e);\n };\n return ColumnVirtualTreeFreezeRenderer;\n}(ColumnVirtualFreezeRenderer));\nexport { ColumnVirtualTreeFreezeRenderer };\n/**\n * VirtualTreeFreezeHdrRenderer is used to render the virtual table within the frozen and movable header table\n *\n * @hidden\n */\nvar VirtualTreeFreezeHdrRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeFreezeHdrRenderer, _super);\n function VirtualTreeFreezeHdrRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeHdrRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n };\n VirtualTreeFreezeHdrRenderer.prototype.rfshMovable = function () {\n _super.prototype.rfshMovable.call(this);\n };\n return VirtualTreeFreezeHdrRenderer;\n}(VirtualFreezeHdrRenderer));\nexport { VirtualTreeFreezeHdrRenderer };\n","import { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer, FreezeContentRender, FreezeRender, parentsUntil, RenderType } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass, getValue } from '@syncfusion/ej2-base';\nimport { ColumnVirtualTreeFreezeRenderer, VirtualTreeFreezeRenderer, VirtualTreeFreezeHdrRenderer } from '../renderer/virtual-tree-freeze-render';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n this.parent.grid.on('initial-load', this.instantiateRenderer, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n this.parent.grid.off('initial-load', this.instantiateRenderer);\n };\n Freeze.prototype.instantiateRenderer = function () {\n var renderer = getValue('serviceLocator', this.parent.grid).getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualTreeFreezeHdrRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new FreezeRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n if (this.parent.enableVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new FreezeContentRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n }\n if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new ColumnFreezeHeaderRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n if (this.parent.enableVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new ColumnVirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new ColumnFreezeContentRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n }\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getMovableDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getFrozenRightRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var rData = this.parent.grid.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n rows[parseInt(i.toString(), 10)].style.display = args.action;\n if (freeze && frozenRightRows.length) {\n frozenRightRows[parseInt(i.toString(), 10)].style.display = args.action;\n }\n var queryselector = args.action === 'none' ? '.e-treecolumn-container .e-treegridcollapse'\n : '.e-treecolumn-container .e-treegridexpand';\n if (frozenrows[rows[parseInt(i.toString(), 10)].rowIndex].querySelector(queryselector)) {\n var cRow = [];\n for (var i_1 = 0; i_1 < movableRows.length; i_1++) {\n if (movableRows[parseInt(i_1.toString(), 10)].querySelector('.e-gridrowindex' + rData.index + 'level' + (rData.level + 1))) {\n cRow.push(movableRows[parseInt(i_1.toString(), 10)]);\n }\n }\n if (cRow.length) {\n var data = this.parent.getCurrentViewRecords()[cRow[0].rowIndex];\n this.rowExpandCollapse({ detailrows: cRow, action: args.action, record: data });\n }\n }\n }\n };\n Freeze.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, 'e-rowcell') &&\n this.parent.grid.editSettings.allowEditOnDblClick && this.parent.editSettings.mode !== 'Cell' && (!e.target['classList'].contains('e-treegridcollapse') && !e.target['classList'].contains('e-treegridexpand'))) {\n this.parent.grid.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Grid, ColumnChooser as GridColumnChooser } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnChooser module\n *\n * @hidden\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance.\n */\n function ColumnChooser(parent) {\n Grid.Inject(GridColumnChooser);\n this.parent = parent;\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @returns {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n return this.parent.grid.columnChooserModule.openColumnChooser(X, Y);\n };\n /**\n * Destroys the openColumnChooser.\n *\n * @function destroy\n * @returns {void}\n */\n ColumnChooser.prototype.destroy = function () {\n //this.parent.grid.ColumnChooserModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnChooser module name\n */\n ColumnChooser.prototype.getModuleName = function () {\n return 'ColumnChooser';\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { Grid, InfiniteScroll as GridInfiniteScroll } from '@syncfusion/ej2-grids';\nimport { RowRenderer, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getExpandStatus } from '../utils';\n/**\n * TreeGrid Infinite Scroll module will handle Infinite Scrolling.\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function InfiniteScroll(parent) {\n this.parent = parent;\n Grid.Inject(GridInfiniteScroll);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.pagingActions, this.infinitePageAction, this);\n this.parent.on('infinite-remote-expand', this.infiniteRemoteExpand, this);\n this.parent.grid.on('delete-complete', this.infiniteDeleteHandler, this);\n this.parent.grid.on('infinite-edit-handler', this.infiniteEditHandler, this);\n this.parent.grid.on('infinite-crud-cancel', this.createRows, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('infinite-remote-expand', this.infiniteRemoteExpand);\n this.parent.grid.off('delete-complete', this.infiniteDeleteHandler);\n this.parent.grid.off('infinite-edit-handler', this.infiniteEditHandler);\n this.parent.off(events.pagingActions, this.infinitePageAction);\n this.parent.grid.off('infinite-crud-cancel', this.createRows);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds);\n };\n /**\n * Handles the Expand Collapse action for Remote data with infinite scrolling.\n *\n * @param {{ index: number, childData: ITreeData[] }} args - expanded row index and its child data\n * @param { number } args.index - expanded row index\n * @param { ITreeData[] } args.childData - child data of expanded row\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteRemoteExpand = function (args) {\n var rowObjects = this.parent.grid.getRowsObject();\n var locator = 'serviceLocator';\n var generateRows = 'generateRows';\n var serviceLocator = this.parent.grid.infiniteScrollModule[\"\" + locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var rows = this.parent.getRows();\n var position = args.index === rows.length - 1 ? 'after' : 'before';\n var cols = this.parent.grid.getColumns();\n var childRowObjects = this.parent.grid.infiniteScrollModule[\"\" + generateRows](args.childData, args);\n var childRowElements = [];\n for (var i = 0; i < childRowObjects.length; i++) {\n childRowElements.push(rowRenderer.render(childRowObjects[parseInt(i.toString(), 10)], cols));\n }\n rowObjects.splice.apply(rowObjects, [args.index + 1, 0].concat(childRowObjects));\n for (var i = 0; i < childRowElements.length; i++) {\n if (position === 'after') {\n rows[args.index + i][\"\" + position](childRowElements[parseInt(i.toString(), 10)]);\n }\n else {\n rows[args.index + i + 1][\"\" + position](childRowElements[parseInt(i.toString(), 10)]);\n }\n rows.splice(args.index + 1 + i, 0, childRowElements[parseInt(i.toString(), 10)]);\n }\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n };\n /**\n * Resetted the row index for expand collapse action for cache support.\n *\n * @returns {void}\n */\n InfiniteScroll.prototype.contentready = function () {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(this.parent.editModule)) {\n var updateIndex = 'updateIndex';\n this.parent.editModule[\"\" + updateIndex](this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.getFrozenColumns()) {\n this.parent.editModule[\"\" + updateIndex](this.parent.grid.dataSource, this.parent.getMovableDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n };\n InfiniteScroll.prototype.collapseExpandInfinitechilds = function (row) {\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n /**\n * Handles the page query for Data operations and CRUD actions.\n *\n * @param {{ result: ITreeData[], count: number, actionArgs: object }} pageingDetails - data, its count and action details\n * @param {ITreeData[]} pageingDetails.result - data on scroll action\n * @param {number} pageingDetails.count - data count on scroll action\n * @param {Object} pageingDetails.actionArgs - scroll action details\n * @returns {void}\n */\n InfiniteScroll.prototype.infinitePageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var infiniteParents = dm.executeLocal(new Query().where(expanded));\n var visualData = infiniteParents.filter(function (e) {\n return getExpandStatus(_this.parent, e, infiniteParents);\n });\n var actionArgs = getValue('actionArgs', pageingDetails.actionArgs);\n var actions = getValue('actions', this.parent.grid.infiniteScrollModule);\n if (this.parent.grid.infiniteScrollModule['isInitialRender'] && !this.parent.initialRender) {\n this.parent.grid.pageSettings.currentPage = 1;\n }\n var initial = actions.some(function (value) { return value === actionArgs.requestType; });\n var initialRender = initial ? true : this.parent.initialRender ? true : false;\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n if (getValue('isPrinting', pageingDetails.actionArgs)) {\n pageingDetails.result = visualData;\n }\n else {\n var query = new Query();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var size = initialRender ?\n this.parent.grid.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :\n this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (!isNullOrUndefined(actionArgs)) {\n var lastIndex = getValue('lastIndex', this.parent.grid.infiniteScrollModule);\n var firstIndex = getValue('firstIndex', this.parent.grid.infiniteScrollModule);\n if (!isCache && actionArgs.requestType === 'delete') {\n var skip = lastIndex - actionArgs.data.length + 1;\n var take = actionArgs.data.length;\n query = query.skip(skip).take(take);\n }\n else if (isCache && actionArgs.requestType === 'delete' ||\n (actionArgs.requestType === 'save' && actionArgs.action === 'add')) {\n query = query.skip(firstIndex);\n query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if ((pageingDetails.actionArgs['action'] === 'expand' || pageingDetails.actionArgs['action'] === 'collapse') && this.parent.grid.pageSettings.currentPage !== 1) {\n current = 1;\n size = this.parent.grid.pageSettings.pageSize * this.parent.grid.pageSettings.currentPage;\n }\n query = query.page(current, size);\n }\n }\n else {\n query = query.page(current, size);\n }\n dm.dataSource.json = visualData;\n if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n pageingDetails.result = [actionArgs.data];\n }\n else {\n pageingDetails.result = dm.executeLocal(query);\n }\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * Handles the currentviewdata for delete operation.\n *\n * @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details\n * @param {InfiniteScrollArgs} args.e - scroller details while CRUD\n * @param {Object[]} args.result - data details while CRUD\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n var infiniteData = 'infiniteCurrentViewData';\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[\"\" + infiniteData];\n var keys = Object.keys(infiniteCurrentViewData);\n if (args.e.requestType === 'delete' && args.result.length > 1) {\n for (var i = 1; i < args.result.length; i++) {\n infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {ActionEventArgs} args - crud action details\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteDeleteHandler = function (args) {\n if (args.requestType === 'delete') {\n var rows = this.parent.grid.getRowsObject();\n var rowElms = this.parent.getRows();\n var data = args.data instanceof Array ? args.data : [args.data];\n var keyField = this.parent.grid.getPrimaryKeyFieldNames()[0];\n this.removeRows(rowElms, rows, data, keyField, true);\n if (this.parent.getFrozenColumns() > 0) {\n var mRows = this.parent.grid.getMovableRowsObject();\n var mRowElms = this.parent.grid.getMovableRows();\n this.removeRows(mRowElms, mRows, data, keyField);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {Element[]} rowElms - row elements\n * @param {Row<Column>[]} rows - Row object collection\n * @param {Object[]} data - data collection\n * @param {string} keyField - primary key name\n * @param { boolean} isFrozen - Specifies whether frozen column enabled\n * @returns {void}\n */\n InfiniteScroll.prototype.removeRows = function (rowElms, rows, data, keyField, isFrozen) {\n var _this = this;\n var resetInfiniteCurrentViewData = 'resetInfiniteCurrentViewData';\n var _loop_1 = function (i) {\n rows.filter(function (e, index) {\n if (e.data[\"\" + keyField] === data[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (isFrozen) {\n var page = Math.ceil((index + 1) / _this.parent.grid.pageSettings.pageSize);\n _this.parent.grid.infiniteScrollModule[\"\" + resetInfiniteCurrentViewData](page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[parseInt(index.toString(), 10)]);\n rowElms.splice(index, 1);\n }\n });\n };\n for (var i = 0; i < data.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * Handles the row objects for Add operation.\n */\n InfiniteScroll.prototype.createRows = function (eventArgs) {\n var locator = 'serviceLocator';\n var actionArgs = eventArgs.args.e;\n var row = eventArgs.row;\n var serviceLocator = this.parent.grid.infiniteScrollModule[\"\" + locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var tbody;\n var currentData = this.parent.getCurrentViewRecords();\n var currentRows = eventArgs.isMovable ? this.parent.grid.getMovableRows()\n : this.parent.grid.getDataRows();\n if (eventArgs.isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector('tbody');\n }\n else {\n tbody = !this.parent.grid.isFrozenGrid() ? this.parent.getContent().querySelector('tbody') : eventArgs.isMovable\n ? this.parent.grid.getMovableVirtualContent().querySelector('tbody')\n : this.parent.grid.getFrozenVirtualContent().querySelector('tbody');\n }\n if (this.parent.frozenRows) {\n tbody = eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType !== 'add'\n || !eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType === 'add'\n ? !this.parent.grid.isFrozenGrid() ? this.parent.getHeaderContent().querySelector('tbody')\n : eventArgs.isMovable ? this.parent.grid.getMovableVirtualHeader().querySelector('tbody')\n : eventArgs.isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector('tbody')\n : this.parent.grid.getFrozenVirtualHeader().querySelector('tbody') : tbody;\n }\n var position;\n var addRowIndex = 'addRowIndex';\n var newRowIndex = this.parent.editModule[\"\" + addRowIndex];\n for (var i = 0; i < row.length; i++) {\n var newRow = rowRenderer.render(row[parseInt(i.toString(), 10)], this.parent.grid.getColumns());\n if (actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n if (getValue('selectedIndex', this.parent.editModule) !== -1 && this.parent.editSettings.newRowPosition !== 'Top') {\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n newRowIndex += findChildrenRecords(currentData[parseInt(newRowIndex.toString(), 10)]).length;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n newRowIndex -= 1; //// for child position already child record is added in childRecords so subtracting 1\n }\n currentRows[parseInt(newRowIndex.toString(), 10)][\"\" + position](newRow);\n }\n else if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n currentRows[this.parent.editModule[\"\" + addRowIndex]][\"\" + position](newRow);\n }\n }\n else if (this.parent.editSettings.newRowPosition === 'Bottom') {\n tbody.appendChild(newRow);\n }\n else {\n tbody.insertBefore(newRow, tbody.firstElementChild);\n }\n }\n else if (actionArgs.requestType === 'delete') {\n tbody.appendChild(newRow);\n }\n }\n eventArgs.cancel = true;\n };\n /**\n * To destroy the infiniteScroll module\n *\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n"],"names":["isRemoteData","parent","dataSource","DataManager","adaptor","ODataAdaptor","WebApiAdaptor","WebMethodAdaptor","CacheAdaptor","UrlAdaptor","isCountRequired","isCheckboxcolumn","i","columns","length","parseInt","toString","showCheckbox","isFilterChildHierarchy","isNullOrUndefined","grid","searchSettings","key","hierarchyMode","allowFiltering","filterSettings","findParentRecords","records","datas","len","Object","keys","getObject","push","getExpandStatus","record","parents","childParent","parentRecord","parentItem","getParentData","uniqueID","initialRender","expandStateMapping","expanded","findChildrenRecords","hasChildRecords","childRecords","filter","item","isSummaryRow","concat","isOffline","dm","ready","extendArray","array","obj","objArr","j","getPlainData","value","index","level","taskData","requireFilter","isHidden","el","style","window","getComputedStyle","display","visibility","editAction","details","control","isSelfReference","addRowIndex","selectedIndex","columnName","addRowRecord","batchChanges","action","getPrimaryKeyFieldNames","treeData","json","modifiedData","originalData","isSkip","editSettings","mode","editModule","getBatchChanges","addAct","currentViewRecords","getCurrentViewRecords","extend","newRowPosition","unshift","primaryKeys","currentdata","addAction","Array","k","_loop_1","prototype","hasOwnProperty","call","editedData","parentIdMapping","idMapping","splice","childMapping","updateParentRow","currentData_1","parentData","flatData","e","p","enableImmutableMode","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","child","index_1","currentRecords","map","enableVirtualization","updatedParent","getValue","parentUniqueID","sortSettings","indexOf","data","setRowData","row","getRowByIndex","getRows","getRowIndexByPrimaryKey","movableRow","frozenRows","getFrozenColumns","getMovableRowByIndex","index_2","treeColumnIndex","allowRowDragAndDrop","renderModule","cellRender","cell","cells","column","getColumns","requestType","RowModifier","Column","options","this","allowEditing","edit","disableHtmlEncode","allowReordering","showColumnMenu","allowSorting","allowResizing","merge","setProperties","clipboardModule","uid","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","LoadingIndicator","_super","apply","Property","ChildProperty","Predicate","FilterSettings","Collection","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","Grid","Inject","GridLogger","getModuleName","log","types","args","type","detailLists","cOp","check","success","message","generateMessage","replace","gridurl","substring","treeGridObj","dataStateChange","console","logType","treeLog","treeGrid","isPrimaryKey","treeGridDetails","mapping_fields_missing","opt","ERROR","rowDataBound","queryCellInfo","beforeDataBound","actionBegin","actionComplete","rowSelected","checkboxChange","rowDeselected","toolbarClick","beforeExcelExport","beforePdfExport","collapsed","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","crudAction","beginEdit","beginAdd","recordDoubleClick","cellSave","cellSaved","cellEdit","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","keyPressed","doubleTap","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","detailDataBound","rowDragStartHelper","rowsAdd","rowsRemove","rowdraging","rowDropped","rowDeselecting","movableContent","frozenContent","content","dataRowIndex","TreeClipboard","serviceLocator","_this","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getSelection","clipBoardTextArea","rows","selectionSettings","selectedIndexes","getSelectedRowIndexes","sort","a","classList","contains","slice","querySelectorAll","uniqueid","getSelectedRecords","copyHierarchyMode","parentContentData","childContentData","headerTextArray","getVisibleColumns","headerText","cancel","trigger","Browser","userAgent","match","setSelectionRange","select","treeLevel","copy","paste","rowIndex","colIndex","destroy","childData","GridClipboard","Selection","selectedItems","filteredList","searchingRecords","addEventListener","on","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","removeEventListener","isDestroyed","off","checkBox","checkWrap","parentsUntil","querySelector","closest","selectCheckboxes","triggerChkChangeEvent","nextElementSibling","autoCheckHierarchy","checkBoxvalue","headerSelection","checkState","rowElement","checked","rowData","getCheckedRecords","events.checkboxChange","getCheckboxcolumnIndex","mappingUid","columnIndex","col","headerCelllength","getHeaderContent","getAttribute","headerElement","rowChkBox","createElement","className","attrs","createCheckBox","label","add","insertBefore","cloneNode","firstChild","renderColumnCheckbox","aria-label","setAttribute","checkboxState","allowTextWrap","width","checkbox","removeClass","container","containerELe","spanEle","innerHTML","divEle","appendChild","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","count","indeter","checkChildRecords","checkBoxRecord","hasFilteredChildRecords","checkAll","multiFilterCheckState","filterResult","rec","currentRecord","checkedRecord","recordIndex","checkboxRecord","tr","movableTr","getMovableDataRows","checkedIndex","checkBoxclass","chkstate","childLength","updatedData","forEach","getCheckedrecords","getCheckedRowIndexes","Print","GridPrint","events.printGridInit","printTreeGrid","printGrid","gridElement","events.queryCellInfo","events.rowDataBound","events.beforeDataBound","addClass","print","SearchSettings","SelectionSettings","Render","templateResult","columnTemplateResult","reactTemplateRender","allowPaging","pageSettings","pageSizeMode","enableCollapseAll","proxy_1","parentrec","cellElement","pad","filterLevel","totalIconsWidth","getColumnByUid","summaryRow","frozenColumns","enableColumnVirtualization","getColumnIndexByUid","emptyExpandIcon","styles","n","iconRequired","expandIcon","expand","updateTreeCell","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","field","notify","checkboxElement","summaryData","template","rowTemplate","treeColumn","templateFn","colindex","templateCompiler","textContent","appendChildren","children","tempID","element","id","isReact","result","refreshReactColumnTemplateByUid","columnUid","clearTemplate","undefined","rowsObj","getRowsObject","indent","getIndentCount","cellIndex","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","td","getCellFromIndex","refreshTD","treecell","DataManipulation","addedRecords","parentItems","taskIds","hierarchyData","storedIndex","sortedData","isSortAction","dataResults","updateParentRemoteData","beginSorting","updateData","events.remoteExpand","collectExpandingRecs","dataProcessor","isRemote","convertToFlatData","query","Query","filterKey","params","param","where","addParams","hasChildMapping","qry","clone","queries","executeQuery","then","DataUtil","distinct","httpRequest","statusText","setValue","zerothLevelData","dataManagerSuccess","hideSpinner","convertJSONData","tempData","selfData","mappingData","executeLocal","group","groupData","items","selfReferenceUpdate","createRecords","referenceData","shift","actionArgs","searchString","expands","loadChildOnDemand","isExpandCollapse","this_1","childRecords_1","parent_1","getUid","Math","ceil","random","aggregates","summaryQuery","q","fn","summaryModule","calculateSummaryValue","rowDetails","isChild","gridRows","getContentTable","childRecord","targetEle","getElementsByClassName","getRowObjectFromUID","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","getDataModule","generateQuery","clonequries","take","pageSize","expandDetail","showSpinner","remoteExpandedData","remoteCollapsedData","currentViewData","inx","haveChild","events.actionComplete","gridQuery","aggregateQuery","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","enableInfiniteScrolling","events.expanded","contentModule","currentInfo","prevInfo","loadNext","currentPage","nextInfo","page","sortBy","parentRecords","treeGridData","currentData","dataObj","isExport","expresults","exportType","isPrinting","actionData","actionAddArgs","primaryKeyColumnName","dataValue","isLocalData","updateAction","filterQuery","searchQuery","results","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","sortComparer","bind","direction","rowDragAndDropModule","dragdIndex","dropdIndex","sortArgs","temp","paging","printMode","actArgs","events.pagingActions","isCollapsedStatePersist","actualResults","dataResult","events.crudAction","events.batchSave","ToolbarItem","ContextMenuItems","PageSettings","AggregateColumn","intl","Internationalization","setFormatter","cultureName","format","skeleton","formatFn","getFormatFunction","getDateFormat","getNumberFormat","getFormatter","setTemplate","helper","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","indentOutdentAction","modifiedRecords","stackedHeader","objectEqualityChecker","old","current","isEqual","excludeKeys","Date","getTime","TreeGrid_1","TreeGridSelection","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","preRender","TreeGridLocale","initProperties","defaultLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","l10n","L10n","locale","sortByColumn","isMultiSort","sortModule","sortColumn","clearSorting","removeSortColumn","search","autoFitColumns","fieldNames","resizeModule","updateColumnModel","reorderColumns","fromFName","toFName","localeObject","gridLocale","treeGridLocale","load","printModule","treeGridkeyActionHandler","allowKeyboard","parentTarget","summaryElement","expandAll","collapseAll","expandCollapseRequest","parentElement","findnextRowElement","selectRow","row_1","clearSelection","findPreviousRowElement","rIndex","cIndex","summaryRowElement","previousElementSibling","infiniteScrollData","columnModel","isExpandAll","isCollapseAll","keyConfigs","ctrlDownArrow","ctrlUpArrow","ctrlShiftUpArrow","ctrlShiftDownArrow","downArrow","upArrow","offline","RemoteSaveAdaptor","wireEvents","EventHandler","mouseClickHandler","keyboardModule","KeyboardEvents","keyAction","eventName","tabIndex","requiredModules","modules","getGridColumns","member","toolbar","contextMenuItems","allowExcelExport","freezePresent","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","IsRowDDInjected","isIndentEnabled","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","portals","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","refreshToolbarItems","renderComplete","destroyTemplateFn","toolbarElement","toolbarModule","getToolbar","indentID","outdentID","indentElement","outdentElement","afterGridRender","griddata","bindGridProperties","bindedDataSource","enableRtl","columnQueryMode","getActualProperties","pagerTemplate","infiniteScrollSettings","enableVirtualMaskRow","loadingIndicator","enableAltRow","enableHover","enableAutoFill","enableAdaptiveUI","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","triggerEvents","IsExpandCollapseClicked","bindGridEvents","rowSelecting","events.rowDeselecting","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","events.rowSelected","events.rowDeselected","resizeStop","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","resizeStart","resizing","columnDrag","columnDragStart","columnDrop","beforePrint","beforeCopy","beforePaste","TreeLogger","printComplete","actionFailure","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","dataBound","updateRowTemplate","updateAltRow","req","totalRows","persistSelection","callBackPromise_1","Deferred","beforeDataBoundArgs","resolve","callBackPromise","events.toolbarClick","toolbarargs","cellSelecting","cellselectingArgs","events.beginEdit","begineditArgs","isExpandRefresh","events.dataStateChange","isContextMenuOpen","contextitems","contextMenuModule","contextMenu","events.cellSave","cellsaveArgs","events.cellSaved","promise","events.cellEdit","events.batchAdd","events.beforeBatchSave","events.beforeBatchAdd","events.batchDelete","events.beforeBatchDelete","events.batchCancel","treeColumnRowTemplate","datacount","defaultQuery","JsonAdaptor","dataManager","isQueryInvokedFromData","callBackPromise_2","events.actionBegin","updateTreeGridModel","events.beginAdd","ag","showChildSummary","refresh","selectedItem_1","selectedRecords","dropIndex","dropPosition","selectedRows","isFrozenGrid","literals.movableContent","literals.frozenContent","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","events.rowdraging","rowDrop","events.rowDropped","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","iconCss","tooltipText","Search","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","enablePersistence","treeColumnTextAlign","textAlign","treeColumnField","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","updateTreeColumnTextAlign","closeEdit","getColumnByField","treeGridElement","hasTreeGridChild","removeListener","dataBind","document","getElementById","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","position","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","visibleRecords","getVisibleRecords","sHeight","scrollHeight","clientHeight","getContent","goToPage","pageNo","pagerModule","updateExternalMessage","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","rowInfo_1","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","updateExpandStateMapping","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollTop","getRowHeight","scrollBy","state","totalRecords","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","startIndex","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","removeAttribute","events.localPagedExpandCollapse","flatDataRecords","deff","data_1","length_1","scrollHeightBeforeRefresh","rows_1","args_1","collapseRemoteChild","movableRows","freezeRightRows","rows_2","getMovableRows","getFrozenRightRows","gridRowsObject","currentIndex","visibleRowCount","gridRow","rcell","arg","movablerows","rightrows","collapsingTd","collapse","expandElement","cRow","eRows","i_1","updateRowAndCellElements","updateResultModel","returnResult","filterByColumn","filterOperator","filterValue","predicate","matchCase","ignoreAccent","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","getSelectedRows","getMovableCellFromIndex","getFrozenRightRowByIndex","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","cnt","isFrozen","getSelectedRowCellIndexes","baseModule","treeModule","reorderRows","fromIndexes","toIndex","outdent","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","hasDropItem","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropRows","orderToIndex","dropData","totalRecord","parentrow","request","selectedItemIndex","selectedItem","selectedRow","selectedRecord","record_1","eventTrigger","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","removeLastrowBorder","islastRowIndex","isEmptyRow","updateIcon","rowEle","rowPositionHeight","addErrorElem","rowTop","toolHeight","offsetHeight","positionOffSet","getOffset","contentHeight","top","offsetTop","divide","getBoundingClientRect","topRowSegment","middleRowSegment","bottomRowSegment","mouseEvent","touchEvent","posy","pageY","changedTouches","isTopSegment","isMiddleRowSegment","isBottomRowSegment","removeChildBorder","removetopOrBottomBorder","addFirstrowBorder","removeErrorElem","topOrBottomBorder","addRemoveClasses","addLastRowborder","borderElem","targetRow","node","div","gridheaderEle","toolbarHeight","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","parentNode","removeChild","spanContent","paddingLeft","dropItemSpan","dropItemLeft","left","spanLeft","errorelem","errorValue","setStyleAttribute","border","box","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","updateModifiedRecords","i_2","i_3","draggedRecords","TreeVirtualRowModelGenerator","events.dataListener","getDatas","visualData","getDataInfo","getData","generateRows","virtualInfo","info","url","blockIndexes","getBlockIndexes","checkAndResetCache","clear","cache","movableCache","frozenRightCache","groups","getBlockSize","VirtualRowModelGenerator","Filter","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","childRec","isExist","parent_2","parent_3","fLevel","ExcelExport","GridExcel","updateExcelResultModel","exportRowDataBound","finalPageSetup","isCsv","Promise","isLocal","event.beforeExcelExport","customData","manipulateExportProperties","book","dtSrc","queryResult","flatsData","dataSrc","excelRow","excelrowobj","rowObj","filtercolumnlength","rowlength","excelRows","rowlevel","Boolean","expandedStatus","sublevelState","grouping","outlineLevel","isCollapsed","worksheets","pageSetup","isSummaryRowBelow","PdfExport","GridPdf","updatePdfResultModel","event.beforePdfExport","customsData","manipulatePdfProperties","flatDatas","paragraphIndent","Page","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","ret","pageRoot","pagedResults","newResults","t","res","updatePageSize","pageingDetails","updateSize","gridPagerModule","pageSizes","pagerObj","pagerdropdownModule","getLocalizedLabel","propname","skip","size","dm_1","or","parents_1","floor","Toolbar","tool","refreshToolbar","toolbarClickHandler","indentEle","outdentEle","selectedrow","isCheckBoxSelection","Aggregate","GridAggregate","flatChildRecords","isSort","flatRecords","summaryLength","dataLength","getChildRecordsLength","summaryRowIndex","len_1","createSummaryItem","idx_1","summaryParent","length_2","itemData","summary","displayColumn","keys_1","getSummaryValues","summaryColumn","single","getFormatFromType","tempObj","requiresCount","summaryKey","sumData","toLowerCase","calculateAggregate","disp","value_1","summaryformat","Sort","GridSort","flatSortedData","updateModel","createdSortedRecords","sortParams","iterateSort","childSort","ColumnMenu","GridColumnMenu","getColumnMenu","columnMenuModule","ContextMenu","cmenu","addRow","editRecord","event","BatchEdit","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","isAdd","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","actualCellIndex","frozenCols","columnObject","getColumnByIndex","added","primaryKey_1","currentDataIndex","indexvalue","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","changes","batchIndex","primaryParent","childRecordCount","updateChildCount","updateRowIndex","focusModule","table","matrix","newlyAddedRecords","childs","primarykey","parentRowIndex","getRowElementByUID","totalCount","mRows","deleterecords","deleteUniqueID","positionIndex","updatedRecords","primarykey_1","addRecords","endIndex","rowPosition","indexValue","Edit","prevAriaRowIndex","isAddedRowByMethod","isAddedRowByContextMenu","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","events.keyPressed","lastCellTab","contentready","editActionEvents","events.doubleTap","gridDblClick","customCellSave","savePreviousRowPosition","events.beforeStartEdit","events.beforeBatchCancel","resetIsOnBatch","getRowPosition","doubleClickTarget","addArgs","applyFormValidation","eventArgs","treeObj","keyData","paramsLength","infiniteAddAction","rowObjects","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","getMovableRowsObject","isCache","enableCache","resetRowIndex","updateIndex","newRowIndex","dataIndex","infiniteCurrentViewData","infiniteScrollModule","isOnBatch","updateGridEditMode","keyPress","prom","celleditArgs","toolbarID","cellDetails","treeCell","afterCellSave","form","rowIndex_1","primaryKeys_1","isTabLastRow","update","fromTable","previousValue","editArgs","filterChoiceCount","excelSearchOperator","mRow","aggregateModule","destroyWidgets","formObj","restoreFocus","saveArgs","previousData","data1","treeColIndex","l","data2","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","focussedElement","activeElement","newFreezeRowObject","rightFrozenRows","errors","focus","newlyAddedRecord","seletedRow","beginAddEdit","primaryKeys_2","selector","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","editFormValidate","destroyForm","CommandColumn","Command","DetailRow","detailrow","dataBoundArg","detaildataBound","setIndentVisibility","childRowExpand","rowExpandCollapse","actioncomplete","detailele","elements","detailData","detailRowElement","detailElement","previousSibling","expandClass","classlist","gridClas","gridclass","newNo","detailClass","spann","updtdcolum","focusElement","VirtualTreeContentRenderer","locator","translateY","maxiPage","recordAdded","preTranslate","isRemoteExpand","getModelGenerator","getMovableVirtualRowByIndex","getRowCollection","getFrozenRightVirtualRowByIndex","isMovable","isRowObject","isFrozenRight","startIdx","literals.dataRowIndex","rowCollection","events.virtualActionArgs","virtualOtherAction","events.indexModifier","setTop","nextSetResIndex","lastIndex","root","onDataReady","refreshContentRows","observers","observes","scrollArgs","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","onActionComplete","virtualEditSuccess","resetIseditValue","cancelEdit","toSelectRowOnContextOpen","refreshCell","cellFocus","getColumnOffset","setVirtualHeight","contents","debounceEvent","TreeInterSectionObserver","getPanel","getTranslateY","sTop","cHeight","isOnenter","initialRowTop","gridTop","containerRect","observer","generateCells","generateCell","rowId","cellType","colSpan","oIndex","foreignKeyData","isDataCell","isTemplate","rowID","Data","isForeignKey","isForeignColumn","Cell","withInRange","restoreEditState","restoreNewRow","isWheel","isIE","setTimeout","showMaskRow","axis","top_1","offsets","xAxis","vgenerator","getColumnIndexes","columnIndexes","cOffsets","maxLeft","upScroll","virtualEle","adjustTable","header","sentinel","outBuffer","offset","downScroll","vHeight","lastInx","remains","rowPt","firsttdinx","isLastBlock","viewInfo","previousInfo","setColumnIndexesInView","loadSelf","addShimmerEffect","removeMaskRow","appendContent","newChild","sentinelInfo","cBlock","cOffset","setWrapperWidth","name","getTable","VirtualContentRenderer","isWheeling","newPos","lastPos","timer","callback","onEnterCallback","instance","virtualScrollHandlers","movableContainer","delay","debounced100","debounce","debounced50","prevTop","prevLeft","scrollbar","delta","clearTimeout","preventDefault","returnValue","axes","entered","InterSectionObserver","VirtualScroll","prevstartIndex","prevendIndex","TreeVirtual","returnVisualData","collapseExpandVirtualchilds","virtualPageAction","expandCollapseRec","counts","resourceCount","sIndex","instantiateRenderers","parentGrid","renderer","getService","RenderType","Header","VirtualHeaderRenderer","Content","ensurePageSize","GridVirtualScroll","VirtualTreeFreezeRenderer","freezeRowGenerator","FreezeRowModelGenerator","virtualRenderer","serviceLoc","getRenderer","virtualHdrRenderer","FreezeContentRender","setPanel","movableCont","getMovableContent","minHeight","literals.content","overflowX","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","renderMovablePlaceHolder","tbl","movableTable","movableWrapper","movablePlaceholder","wrapper","getFrozenContent","setDebounce","movableEle","VirtualFreezeRenderer","ColumnVirtualTreeFreezeRenderer","ColumnFreezeContentRenderer","frozenRightCont","getFrozenRightContent","frzCont","getFrozenMode","ColumnVirtualFreezeRenderer","VirtualTreeFreezeHdrRenderer","rfshMovable","VirtualFreezeHdrRenderer","Freeze","FreezeColumn","dblClickHandler","instantiateRenderer","FreezeRender","ColumnFreezeHeaderRenderer","frozenRightRows","frozenrows","rData","queryselector","freezeModule","ColumnChooser","GridColumnChooser","X","Y","InfiniteScroll","GridInfiniteScroll","infinitePageAction","infiniteRemoteExpand","infiniteDeleteHandler","infiniteEditHandler","createRows","collapseExpandInfinitechilds","rowRenderer","RowRenderer","childRowObjects","childRowElements","infiniteParents","actions","initialBlocks","maxBlocks","firstIndex","rowElms","keyField","removeRows","mRowElms","tbody","currentRows","getMovableVirtualContent","getFrozenVirtualContent","isFrozenRows","getMovableVirtualHeader","getFrozenVirtualHeader","newRow"],"mappings":"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"}
|