@syncfusion/ej2-treegrid 19.4.56 → 20.1.47
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/CHANGELOG.md +1 -79
- package/dist/ej2-treegrid.umd.min.js +2 -2
- package/dist/ej2-treegrid.umd.min.js.map +1 -1
- package/dist/es6/ej2-treegrid.es2015.js +4817 -4750
- package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
- package/dist/es6/ej2-treegrid.es5.js +5018 -4951
- package/dist/es6/ej2-treegrid.es5.js.map +1 -1
- package/dist/global/ej2-treegrid.min.js +2 -2
- package/dist/global/ej2-treegrid.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +9 -9
- package/src/treegrid/actions/crud-actions.js +3 -1
- package/src/treegrid/actions/rowdragdrop.d.ts +2 -0
- package/src/treegrid/actions/rowdragdrop.js +50 -14
- package/src/treegrid/actions/toolbar.js +2 -2
- package/src/treegrid/base/treegrid-model.d.ts +1 -1
- package/src/treegrid/base/treegrid.d.ts +12 -0
- package/src/treegrid/base/treegrid.js +50 -1
- package/src/treegrid/models/column.d.ts +0 -9
- package/src/treegrid/models/column.js +0 -19
- package/styles/bootstrap-dark.css +27 -4
- package/styles/bootstrap.css +27 -4
- package/styles/bootstrap4.css +21 -4
- package/styles/bootstrap5-dark.css +43 -19
- package/styles/bootstrap5.css +43 -19
- package/styles/fabric-dark.css +27 -4
- package/styles/fabric.css +27 -4
- package/styles/fluent-dark.css +560 -0
- package/styles/fluent-dark.scss +1 -0
- package/styles/fluent.css +560 -0
- package/styles/fluent.scss +1 -0
- package/styles/highcontrast-light.css +27 -4
- package/styles/highcontrast.css +27 -4
- package/styles/material-dark.css +19 -2
- package/styles/material.css +19 -2
- package/styles/tailwind-dark.css +41 -80
- package/styles/tailwind.css +26 -65
- package/styles/treegrid/_bootstrap5-definition.scss +3 -3
- package/styles/treegrid/_fluent-dark-definition.scss +1 -0
- package/styles/treegrid/_fluent-definition.scss +3 -3
- package/styles/treegrid/_layout.scss +62 -7
- package/styles/treegrid/_tailwind-definition.scss +3 -3
- package/styles/treegrid/bootstrap-dark.css +27 -4
- package/styles/treegrid/bootstrap.css +27 -4
- package/styles/treegrid/bootstrap4.css +21 -4
- package/styles/treegrid/bootstrap5-dark.css +43 -19
- package/styles/treegrid/bootstrap5.css +43 -19
- package/styles/treegrid/fabric-dark.css +27 -4
- package/styles/treegrid/fabric.css +27 -4
- package/styles/treegrid/fluent-dark.css +560 -0
- package/styles/treegrid/fluent-dark.scss +18 -0
- package/styles/treegrid/fluent.css +560 -0
- package/styles/treegrid/fluent.scss +18 -0
- package/styles/treegrid/highcontrast-light.css +27 -4
- package/styles/treegrid/highcontrast.css +27 -4
- package/styles/treegrid/icons/_fluent-dark.scss +1 -0
- package/styles/treegrid/icons/_tailwind-dark.scss +5 -5
- package/styles/treegrid/icons/_tailwind.scss +5 -5
- package/styles/treegrid/material-dark.css +19 -2
- package/styles/treegrid/material.css +19 -2
- package/styles/treegrid/tailwind-dark.css +41 -80
- package/styles/treegrid/tailwind.css +26 -65
|
@@ -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 parentData['childRecords'].splice(p, 1);\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 row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\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'][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 columns = (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = this.parent.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 } 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 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 { CellRenderer } from '@syncfusion/ej2-grids';\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.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 if (this.allowRowDragAndDrop) {\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 this.grid.appendTo(gridContainer);\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.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 actionArgs = {\n requestType: _this.action,\n data: _this.selectedRecords,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = [];\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, disabled: true,\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, disabled: true,\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 }\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 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 /**\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 table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[record.index], sHeight <= clientHeight);\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 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 stackedHeader = false;\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 stackedHeader = true;\n }\n if (!stackedHeader) {\n this.setProperties({ columns: this.columnModel }, true);\n }\n this[merge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.grid.getRowsObject();\n var indent = _this.grid.getIndentCount();\n var cellIndex = _this.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.grid, _this.grid.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\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 this.grid.dataSource = !(this.dataSource instanceof DataManager) ? this.flatData :\n new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\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 _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 _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 /**\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) && (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 * @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 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 } 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.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 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 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 = this.parent.treeColumnIndex + 1;\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 for (var i = 0; i < totalRecord.length; i++) {\n this.parent.renderModule.cellRender({\n data: totalRecord[i], cell: rows[i].cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this.parent[action] === 'indenting' || this.parent[action] === 'outdenting') {\n this.parent.renderModule.RowModifier({\n data: totalRecord[i], row: rows[i]\n });\n }\n }\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n var _loop_1 = function (i) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = currentData.filter(function (data) {\n return data.uniqueID === currentData[i].parentUniqueID;\n })[0];\n currentData[i].parentItem.index = updatedParent.index;\n }\n };\n for (var i = 0; i < currentData.length; i++) {\n _loop_1(i);\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) && 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 }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n if (errorelem) {\n errorelem.remove();\n }\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) {\n var parentItem = record.parentItem;\n if (this.dropPosition === 'bottomSegment') {\n var selectedRecord = this.parent.getSelectedRecords()[0];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getSelectedRecords()[0].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 rowIndex = tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record);\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 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_2 = 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 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_2(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) {\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 }\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 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 if (args.row.rowIndex === 0 || tObj.getSelectedRecords().length > 1) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent', tObj.element.id + '_gridcontrol_outdent'], false);\n }\n else if (args['name'] !== \"rowDeselected\") {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex])) {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex]) &&\n (tObj.getCurrentViewRecords()[args.row.rowIndex].level >\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level)) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], false);\n }\n else {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level ===\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level === 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], false);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level !== 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n }\n }\n if (args['name'] === \"rowDeselected\") {\n if (this.parent.toolbar['includes']('Indent')) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], false);\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], false);\n }\n }\n if (args.row.rowIndex === 0 && !isNullOrUndefined(args.data.parentItem)) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var action = 'action';\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 var record = tObj.getCurrentViewRecords()[tObj.getSelectedRowIndexes()[0] - 1];\n var dropIndex = void 0;\n if (record.level > tObj.getSelectedRecords()[0].level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record.parentItem.taskData) {\n dropIndex = i;\n }\n }\n }\n else {\n dropIndex = tObj.getSelectedRowIndexes()[0] - 1;\n }\n this.parent[action] = 'indenting';\n this.eventTrigger('indenting', dropIndex);\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length) {\n var dropIndex = void 0;\n var parentItem = tObj.getSelectedRecords()[0].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 this.parent[action] = 'outdenting';\n this.eventTrigger('outdenting', dropIndex);\n }\n };\n Toolbar.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var selectedRecords = 'selectedRecords';\n var selectedRows = 'selectedRows';\n this.parent[selectedRows] = this.parent.getSelectedRows();\n this.parent[selectedRecords] = this.parent.getSelectedRecords();\n var actionArgs = {\n requestType: action,\n data: this.parent.getSelectedRecords(),\n row: this.parent.getSelectedRows(),\n cancel: false\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.requestType === 'indenting') {\n _this.parent.reorderRows([_this.parent.getSelectedRowIndexes()[0]], dropIndex, 'child');\n }\n else if (actionArgs.requestType === 'outdenting') {\n _this.parent.reorderRows([_this.parent.getSelectedRowIndexes()[0]], dropIndex, 'below');\n }\n }\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';\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 this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\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.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.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 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 };\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 ? +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 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) {\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' ||\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","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","enableImmutableMode","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","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","getRowsObject","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","undefined","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","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","cellIndex","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","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","renderComplete","destroyTemplateFn","clearTemplate","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","selectedRecords","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","disabled","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","closeEdit","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","toolbarModule","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","sHeight","scrollHeight","clientHeight","getContent","goToPage","pageNo","pagerModule","updateExternalMessage","getCellFromIndex","getColumnByField","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","stackedHeader","refreshReactColumnTemplateByUid","columnUid","rowsObj","indent","getIndentCount","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","serviceLocator","td","refreshTD","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","getVisibleRecords","visibleRecords","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollTop","getRowHeight","scrollBy","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","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","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropPosition","dropIndex","dropRows","orderToIndex","dropData","totalRecord","parentrow","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","getToolbar","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","content","parentNode","removeChild","spanContent","paddingLeft","errorelem","border","box","getBoundingClientRect","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","left","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","selectedRecord","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","_loop_2","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","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","state","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","eventTrigger","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","totalRecords","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","request","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","primaryKeys_2","selector","beginAddEdit","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","name","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/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/actions/rowdragdrop.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/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 row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\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 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 columns = (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = this.parent.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 } 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 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","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.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 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 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.orderToIndex = function (currentData) {\n var _loop_1 = function (i) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = currentData.filter(function (data) {\n return data.uniqueID === currentData[i].parentUniqueID;\n })[0];\n currentData[i].parentItem.index = updatedParent.index;\n }\n };\n for (var i = 0; i < currentData.length; i++) {\n _loop_1(i);\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) && 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) {\n var parentItem = record.parentItem;\n if (this.dropPosition === 'bottomSegment') {\n var selectedRecord = this.parent.getSelectedRecords()[0];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getSelectedRecords()[0].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 rowIndex = tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record);\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 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_2 = 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_2(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 }\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","/**\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 { CellRenderer } from '@syncfusion/ej2-grids';\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 { RowDD } from '../actions/rowdragdrop';\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.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 if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') || this.toolbar['includes']('Outdent'))) {\n TreeGrid_1.Inject(RowDD);\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 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.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 actionArgs = {\n requestType: _this.action,\n data: _this.selectedRecords,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = [];\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, disabled: true,\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, disabled: true,\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 table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[record.index], sHeight <= clientHeight);\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 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 stackedHeader = false;\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 stackedHeader = true;\n }\n if (!stackedHeader) {\n this.setProperties({ columns: this.columnModel }, true);\n }\n this[merge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.grid.getRowsObject();\n var indent = _this.grid.getIndentCount();\n var cellIndex = _this.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.grid, _this.grid.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\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 this.grid.dataSource = !(this.dataSource instanceof DataManager) ? this.flatData :\n new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\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 _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 _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 /**\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 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","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 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 if (args.row.rowIndex === 0 || tObj.getSelectedRecords().length > 1) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent', tObj.element.id + '_gridcontrol_outdent'], false);\n }\n else if (args['name'] !== 'rowDeselected') {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex])) {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex]) &&\n (tObj.getCurrentViewRecords()[args.row.rowIndex].level >\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level)) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], false);\n }\n else {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level ===\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level === 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], false);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level !== 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n }\n }\n if (args['name'] === 'rowDeselected') {\n if (this.parent.toolbar['includes']('Indent')) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], false);\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], false);\n }\n }\n if (args.row.rowIndex === 0 && !isNullOrUndefined(args.data.parentItem)) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var action = 'action';\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 var record = tObj.getCurrentViewRecords()[tObj.getSelectedRowIndexes()[0] - 1];\n var dropIndex = void 0;\n if (record.level > tObj.getSelectedRecords()[0].level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record.parentItem.taskData) {\n dropIndex = i;\n }\n }\n }\n else {\n dropIndex = tObj.getSelectedRowIndexes()[0] - 1;\n }\n this.parent[action] = 'indenting';\n this.eventTrigger('indenting', dropIndex);\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length) {\n var dropIndex = void 0;\n var parentItem = tObj.getSelectedRecords()[0].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 this.parent[action] = 'outdenting';\n this.eventTrigger('outdenting', dropIndex);\n }\n };\n Toolbar.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var selectedRecords = 'selectedRecords';\n var selectedRows = 'selectedRows';\n this.parent[selectedRows] = this.parent.getSelectedRows();\n this.parent[selectedRecords] = this.parent.getSelectedRecords();\n var actionArgs = {\n requestType: action,\n data: this.parent.getSelectedRecords(),\n row: this.parent.getSelectedRows(),\n cancel: false\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.requestType === 'indenting') {\n _this.parent.reorderRows([_this.parent.getSelectedRowIndexes()[0]], dropIndex, 'child');\n }\n else if (actionArgs.requestType === 'outdenting') {\n _this.parent.reorderRows([_this.parent.getSelectedRowIndexes()[0]], dropIndex, 'below');\n }\n }\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';\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 this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\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.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.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 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 };\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 ? +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 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) {\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' ||\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","__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","uid","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","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","getRowsObject","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","RowDD","canDrop","isDraggedWithChild","hasDropItem","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","events.rowdraging","Rowdraging","events.rowDropped","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","reorderRows","fromIndexes","toIndex","position","tObj","updateRowAndCellElements","dropPosition","dropIndex","dropRows","orderToIndex","refresh","dropData","totalRecord","parentrow","updatedParent","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","setProperties","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","remove","removeLastrowBorder","isEmptyRow","islastRowIndex","updateIcon","rowEle","undefined","rowPositionHeight","addErrorElem","rowTop","toolHeight","toolbar","document","getElementById","offsetHeight","positionOffSet","getOffset","contentHeight","top","scrollTop","getContent","firstElementChild","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","toolbarModule","getToolbar","multiplegrid","rowDropSettings","targetID","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","content","parentNode","removeChild","spanContent","paddingLeft","dropItemSpan","dropItemLeft","left","spanLeft","enableRtl","errorelem","errorValue","setStyleAttribute","border","box","getBoundingClientRect","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","cloneElement","cursor","rowIdx","ensuredropPosition","rowDragAndDropModule","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","parentElement","primaryKeyField","srcControl","targetIndex","isNaN","indexes","actualData","i_1","srcControlFlatData","actualIndex","selectedRecord","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","_loop_2","this_1","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","i_2","i_3","draggedRecords","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","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","findnextRowElement","selectRow","cellIndex","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","contextMenuItems","allowExcelExport","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","loggerModule","render","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","addListener","gridContainer","height","gridRequiredModules","appendTo","renderComplete","destroyTemplateFn","clearTemplate","afterGridRender","clipboardModule","griddata","bindGridProperties","bindedDataSource","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","selectedRecords","selectedRows","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","rowDrop","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","tooltipText","Search","prefixIcon","disabled","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","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","sHeight","scrollHeight","clientHeight","goToPage","pageNo","pagerModule","updateExternalMessage","getCellFromIndex","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","stackedHeader","refreshReactColumnTemplateByUid","columnUid","rowsObj","indent","getIndentCount","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","serviceLocator","td","refreshTD","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","getVisibleRecords","visibleRecords","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","getRowHeight","scrollBy","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","collapseAtLevel","collapseAction","collapseByKey","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","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","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","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","state","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","eventTrigger","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","totalRecords","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","request","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","primaryKeys_2","selector","beginAddEdit","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","name","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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AAqB3H,YAAYC,EAAaC,EAASC,IAEhE,IAAIoN,EAiYJ,OAhYA5pB,IACIc,WAAS,IACVkoB,EAASttB,UAAW,kBAAc,GACrCsE,IACIc,WAAS,IACVkoB,EAASttB,UAAW,qBAAiB,GACxCsE,IACIc,WAAS,aACVkoB,EAASttB,UAAW,gBAAY,GACnCsE,IACIc,gBACDkoB,EAASttB,UAAW,eAAW,GAClCsE,IACIc,WAAS,OACVkoB,EAASttB,UAAW,oBAAgB,GACvCsE,IACIc,WAAS,OACVkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,WAAS,IACVkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,WAAS,OACVkoB,EAASttB,UAAW,iBAAa,GACpCsE,IACIc,WAAS,OACVkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIc,WAAS,OACVkoB,EAASttB,UAAW,0BAAsB,GAC7CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,2BAAuB,GAC9CsE,IACIc,gBACDkoB,EAASttB,UAAW,kBAAc,GACrCsE,IACIc,cACDkoB,EAASttB,UAAW,aAAS,GAChCsE,IACIc,cACDkoB,EAASttB,UAAW,kBAAc,GACrCsE,IACIc,WAAS,aACVkoB,EAASttB,UAAW,iBAAa,GACpCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,mBAAe,GACtCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,qBAAiB,GACxCsE,IACIqmC,aAAYnlC,IACb8nB,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,qBAAiB,GACxCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,0BAAsB,GAC7CsE,IACIqmC,aAAYlf,KACb6B,EAASttB,UAAW,oBAAgB,GACvCsE,IACIqmC,aAAYC,oBACbtd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,cACDkoB,EAASttB,UAAW,qBAAiB,GACxCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,oBAAgB,GACvCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIqmC,aAAYvd,KACbE,EAASttB,UAAW,oBAAgB,GACvCsE,IACIiB,gBAAe0nB,KAChBK,EAASttB,UAAW,kBAAc,GACrCsE,IACIqmC,aAAYzd,KACbI,EAASttB,UAAW,oBAAgB,GACvCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIc,cACDkoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIqmC,aAAYrlC,IACbgoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIqmC,aAAYj3B,KACb4Z,EAASttB,UAAW,sBAAkB,GACzCsE,IACIc,cACDkoB,EAASttB,UAAW,eAAW,GAClCsE,IACIc,cACDkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,WAAS,YACVkoB,EAASttB,UAAW,iBAAa,GACpCsE,IACIc,cACDkoB,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIc,cACDkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIc,cACDkoB,EAASttB,UAAW,mBAAe,GACtCsE,IACIc,WAAS,WACVkoB,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIc,WAAS,OACVkoB,EAASttB,UAAW,iBAAa,GACpCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,oBAAgB,GACvCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,qBAAiB,GACxCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,mBAAe,GACtCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,2BAAuB,GAC9CsE,IACIc,WAAS,SACVkoB,EAASttB,UAAW,cAAU,GACjCsE,IACIc,WAAS,SACVkoB,EAASttB,UAAW,aAAS,GAChCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,4BAAwB,GAC/CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,kCAA8B,GACrDsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,+BAA2B,GAClDsE,IACIqmC,aAAYtd,KACbC,EAASttB,UAAW,8BAA0B,GACjDsE,IACIc,WAAS,QACVkoB,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,eAAW,GAClCsE,IACIumC,WACDvd,EAASttB,UAAW,YAAQ,GAC/BsE,IACIumC,WACDvd,EAASttB,UAAW,iBAAa,GACpCsE,IACIumC,WACDvd,EAASttB,UAAW,gBAAY,GACnCsE,IACIumC,WACDvd,EAASttB,UAAW,kBAAc,GACrCsE,IACIumC,WACDvd,EAASttB,UAAW,iBAAa,GACpCsE,IACIumC,WACDvd,EAASttB,UAAW,gBAAY,GACnCsE,IACIumC,WACDvd,EAASttB,UAAW,iBAAa,GACpCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,iBAAa,GACpCsE,IACIumC,WACDvd,EAASttB,UAAW,gBAAY,GACnCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,gBAAY,GACnCsE,IACIumC,WACDvd,EAASttB,UAAW,qBAAiB,GACxCsE,IACIumC,WACDvd,EAASttB,UAAW,iBAAa,GACpCsE,IACIumC,WACDvd,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIumC,WACDvd,EAASttB,UAAW,oBAAgB,GACvCsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,qBAAiB,GACxCsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,oBAAgB,GACvCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,qBAAiB,GACxCsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,qBAAiB,GACxCsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,oBAAgB,GACvCsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,gBAAY,GACnCsE,IACIumC,WACDvd,EAASttB,UAAW,kBAAc,GACrCsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,kBAAc,GACrCsE,IACIumC,WACDvd,EAASttB,UAAW,kBAAc,GACrCsE,IACIumC,WACDvd,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,qBAAiB,GACxCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,oBAAgB,GACvCsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIumC,WACDvd,EAASttB,UAAW,kBAAc,GACrCsE,IACIumC,WACDvd,EAASttB,UAAW,mBAAe,GACtCsE,IACIumC,WACDvd,EAASttB,UAAW,eAAW,GAClCsE,IACIumC,WACDvd,EAASttB,UAAW,oBAAgB,GACvCsE,IACIumC,WACDvd,EAASttB,UAAW,0BAAsB,GAC7CsE,IACIumC,WACDvd,EAASttB,UAAW,eAAW,GAClCsE,IACIc,YAAU,IACXkoB,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIqmC,aAAYh3B,KACb2Z,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIc,YAAS,IACVkoB,EAASttB,UAAW,sBAAkB,GACzCsE,IACIumC,WACDvd,EAASttB,UAAW,wBAAoB,GAC3CsE,IACIumC,WACDvd,EAASttB,UAAW,8BAA0B,GACjDsE,IACIumC,WACDvd,EAASttB,UAAW,0BAAsB,GAC7CsE,IACIumC,WACDvd,EAASttB,UAAW,gCAA4B,GACnDsE,IACIumC,WACDvd,EAASttB,UAAW,yBAAqB,GAC5CsE,IACIumC,WACDvd,EAASttB,UAAW,2BAAuB,GAC9CsE,IACIumC,WACDvd,EAASttB,UAAW,uBAAmB,GAC1CsE,IACIumC,WACDvd,EAASttB,UAAW,yBAAqB,GAC5CstB,EAAWY,EAAa5pB,IACpBwmC,yBACDxd,IAELyd,aCpwHEC,GAAyB,WAMzB,SAASA,EAAQnxC,GACbgM,OAAKC,OAAOmlC,WACZ7nC,KAAKvJ,OAASA,EACduJ,KAAKkK,mBAgDT,OAxCA09B,EAAQhrC,UAAUgG,cAAgB,WAC9B,MAAO,WAMXglC,EAAQhrC,UAAUsN,iBAAmB,WACjClK,KAAKvJ,OAAO0T,GAAG,iBAAkBnK,KAAK8nC,cAAe9nC,OAEzD4nC,EAAQhrC,UAAU4N,oBAAsB,WAChCxK,KAAKvJ,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"}
|