@syncfusion/ej2-treegrid 20.3.60 → 20.3.61
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 +8 -0
- package/dist/ej2-treegrid.min.js +2 -2
- 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 +6 -7
- package/dist/es6/ej2-treegrid.es2015.js.map +1 -1
- package/dist/es6/ej2-treegrid.es5.js +6 -7
- 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 +6 -6
- package/src/treegrid/base/treegrid.js +6 -7
|
@@ -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/renderer/virtual-tree-freeze-render.js","../src/treegrid/actions/freeze-column.js","../src/treegrid/actions/column-chooser.js","../src/treegrid/actions/infinite-scroll.js"],"sourcesContent":["import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[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.filter(function (item) { return !item.isSummaryRow; });\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[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 && parentData.childRecords.length === parentData['Children'].length) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[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 (control.enableVirtualization && isNullOrUndefined(index_1)) {\n var updatedParent = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n record = updatedParent;\n }\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[index_1];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[key] !== child[key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[control.childMapping].indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[i][primaryKeys] === record[primaryKeys]) {\n data[i] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[index_2] ? row.cells[index_2]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\n }\n }\n }\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[i] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[i]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[i] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[i] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[i] === 'primary_column_missing' || type[i] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[i] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[i] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[i] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[i] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[i] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[i]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent, serviceLocator) {\n var _this = _super.call(this, parent.grid, serviceLocator) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n _this.serviceLocator = serviceLocator;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[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.searchingRecords = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = 'stackedHeader';\n var columnModel = 'columnModel';\n var columns = this.parent[stackedHeader] ? this.parent[columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = columns[col].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[j];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox', 'aria-label': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[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 && (!record.hasFilteredChildRecords || isNullOrUndefined(record.hasFilteredChildRecords)) && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check') {\n record.checkboxState = 'check';\n }\n else if ((checkChildRecords === 0 && indeter === 0) || (checkChildRecords === 0 && record.hasFilteredChildRecords && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check')) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n //This property used to maintain the check state of the currentview data after clear filtering\n var multiFilterCheckState = false;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n if (this.parent.grid.searchSettings.key.length) {\n this.searchingRecords = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n multiFilterCheckState = true;\n }\n else {\n multiFilterCheckState = false;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length && !this.parent.grid.searchSettings.key.length) {\n this.filteredList = [];\n }\n if (this.searchingRecords.length && !isNullOrUndefined(checkAll)) {\n this.filteredList = this.searchingRecords;\n }\n }\n var data;\n if (this.parent.filterModule.filteredResult.length === 0 && this.parent.getCurrentViewRecords().length === 0 &&\n this.parent.filterSettings.columns.length > 0) {\n data = this.filteredList;\n }\n else {\n data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList : this.parent.flatData;\n }\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[i].checkboxState === 'check') {\n continue;\n }\n if (multiFilterCheckState) {\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 tr = this.parent.getRows()[recordIndex];\n var checkbox;\n if (recordIndex > -1) {\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[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 var chkstate = checkState === 'check' ? 'checked' : checkState === 'uncheck' ? 'unchecked' : 'mixed';\n tr.querySelector('.e-treecheckselect').setAttribute('aria-checked', checkState === 'check' ? 'true' : checkState === 'uncheck' ? 'false' : 'mixed');\n tr.querySelector('.e-frame').setAttribute('title', 'checkbox' + chkstate);\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[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 && record.childRecords.length > 0) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[i].hasChildRecords) {\n _this.updateParentSelection(child[i]);\n }\n else if (!(child[i].hasChildRecords) && !isNullOrUndefined(child[i])) {\n _this.updateSelectedItems(child[i], child[i].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed) {\n args.row.style.display = 'none';\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0 && !parentrec[0].isSummaryRow) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (<ITreeData>args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n iconRequired = !(data.childRecords.length === 0);\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n args.cell.setAttribute('aria-expanded', data.expanded ? 'true' : 'false');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '7px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n if (args.column.template) {\n args.cell.innerHTML = null;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('data-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n args.column.template = treeColumn.template;\n args.column[templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[templateFn](args.data, this.parent, 'template', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[portals])) {\n this.parent.grid[portals] = this.parent[portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[i]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n var treecell = _this.parent.getRows()[j].cells[cellIndex];\n _this.cellRender({ data: rowsObj[j].data, cell: treecell, column: cell.column });\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = <DataManager>this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[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) && !((this.parent.loadChildOnDemand) && isCountRequired(this.parent) && !isNullOrUndefined(this.parent['dataResults']['expandRecord']))) {\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]) && !isCountRequired(this.parent)) ||\n ((currentData[this.parent.hasChildMapping]) && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n if (isNullOrUndefined(currentData[this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n this.parent['infiniteScrollData'].push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[primaryKeyColumnName])) {\n actionAddArgs.data[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n dataValue.taskData[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[getColumnByField](this.parent.grid.\n sortSettings.columns[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 if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&\n this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n modifiedData.splice(dragdIndex, 1);\n var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[isPdfExport] && (isNullOrUndefined(args[isCollapsedStatePersist])\n || args[isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[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[\"RowIndent\"] = 16] = \"RowIndent\";\n ContextMenuItems[ContextMenuItems[\"RowOutdent\"] = 17] = \"RowOutdent\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, addClass, createElement, EventHandler, isNullOrUndefined, extend, merge } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\nimport * as literals from '../base/constant';\n/**\n * Represents the TreeGrid component.\n * ```html\n * <div id='treegrid'></div>\n * <script>\n * var treegridObj = new TreeGrid({ allowPaging: true });\n * treegridObj.appendTo('#treegrid');\n * </script>\n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[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.infiniteScrollData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n var freezePresent = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'freeze';\n });\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount() || freezePresent.length) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'rowDragAndDrop';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[i].member === 'virtualscroll') {\n modules[i].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[root] = this[root] ? this[root] : this;\n this.grid.appendTo(gridContainer);\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this, this.grid.serviceLocator);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.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 this.grid.enableVirtualMaskRow = false; // Need to update in virtual mask row feature implementation.\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.IsExpandCollapseClicked = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))\n && (!isNullOrUndefined(args.data) && args.data['hasChildRecords'])) {\n args.cancel = true;\n return;\n }\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowDeselecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowDeselecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[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.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 if (args.action.requestType !== 'infiniteScroll') {\n _this.infiniteScrollData = [];\n }\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n this.treeColumnRowTemplate();\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[dataSource].json = extendArray(this.dataSource[dataSource].json);\n this.grid.dataSource[ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[ready])) {\n this.grid.dataSource[ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[dataSource].offline = true;\n dm[isDataAvailable] = true;\n dm[dataSource].json = e.result;\n dm[adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 && _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (args.action === 'filter') {\n if (_this.filterModule['currentFilterObject'] !== '' && _this.enableVirtualization && !_this.initialRender) {\n _this.expandAll();\n }\n }\n if (args.requestType === 'searching') {\n if (_this.searchSettings.key !== '' && _this.enableVirtualization && !_this.initialRender) {\n _this.expandAll();\n }\n }\n if (args.action === 'clearFilter' && _this.enableCollapseAll) {\n _this.collapseAll();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n if (_this.grid.isFrozenGrid() && _this.enableVirtualization && args['tableName'] === 'movable') {\n var movableContent = _this.grid.element.querySelector('.' + literals.movableContent);\n var frozenContent = _this.grid.element.querySelector('.' + literals.frozenContent);\n movableContent.style.height = frozenContent.style.height = 'auto';\n }\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (<DataManager>this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[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 case 'Indent':\n case ContextMenuItems.RowIndent:\n items.push({ text: this.l10n.getConstant('RowIndent'),\n target: '.e-content', iconCss: 'e-indent e-icons', id: this.element.id + '_gridcontrol_cmenu_Indent' });\n break;\n case 'Outdent':\n case ContextMenuItems.RowOutdent:\n items.push({ text: this.l10n.getConstant('RowOutdent'),\n target: '.e-content', iconCss: 'e-outdent e-icons', id: this.element.id + '_gridcontrol_cmenu_Outdent' });\n break;\n default:\n items.push(this.contextMenuItems[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 this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[i]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n if (this.columnModel.length == 0) {\n index = index === 0 ? -1 : index;\n }\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[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, this.columnModel.length - 1);\n treeGridColumn[prop] = column[i][prop];\n }\n else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {\n gridColumn[prop] = treeGridColumn[prop] = treeColumn[prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[prop] = treeGridColumn[prop] = column[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 this.TreeGridLocale();\n this.grid.toolbar = this.getGridToolbar();\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[prop].mode &&\n (newProp[prop].mode === 'Cell' || newProp[prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n this.ignoreInArrays(ignoreOnColumn, columns[i].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[index];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[rowIndex];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[prop] = gridColumns[i][prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[i].field && this.columnModel[i].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[i].template = temp;\n }\n }\n }\n var deepMerge = 'deepMerge';\n this[deepMerge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (!this.stackedHeader) {\n merge(this.columns, this.columnModel);\n }\n this[deepMerge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n dRows.push(rows[i]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n return this.grid.currentViewData;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[i]);\n if (!currentViewRecords[i].expanded) {\n i += findChildrenRecords(currentViewRecords[i]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if ((this.getBatchChanges()[this.changedRecords].length ||\n this.getBatchChanges()[this.deletedRecords].length || this.getBatchChanges()[this.addedRecords].length)\n && this.editSettings.showConfirmDialog) {\n var dialogObj = this.grid.editModule[obj];\n this.grid.editModule[showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo_1 = this.grid.getRowInfo(target);\n var record = rowInfo_1.rowData;\n if (this.grid.isFrozenGrid() && this.enableVirtualization && !Object.keys(record).length) {\n var freezeRows = 'freezeRows';\n record = this.grid.contentModule[freezeRows].filter(function (e) { return e.uid === rowInfo_1.row.getAttribute('data-uid'); })[0].data;\n }\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo_1.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo_1.row, record);\n }\n else {\n this.expandRow(rowInfo_1.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n _this.expandCollapse('expand', row, record);\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n var children = 'Children';\n if (!(isRemoteData(_this) && !isOffline(_this)) && (!isCountRequired(_this) || !isNullOrUndefined(record[children]))) {\n var collapseArgs = { data: record, row: row };\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, true);\n }\n _this.trigger(events.expanded, collapseArgs);\n }\n }\n });\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[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('data-rowindex')];\n }\n else {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(_this)) {\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, false);\n }\n _this.trigger(events.collapsed, collapseArgs);\n if (_this.enableInfiniteScrolling) {\n var scrollHeight = _this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = _this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < _this.grid.getRowHeight() + +_this.height) {\n _this.grid.getContent().firstElementChild.scrollBy(0, _this.grid.getRowHeight());\n }\n }\n }\n }\n });\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[i][this.expandStateMapping] = state;\n editAction({ value: totalRecords[i], action: 'edit' }, this, this.isSelfReference, totalRecords[i].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[i].parentItem)) {\n var puniqueID_1 = record[i].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[i], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[i], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n 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 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) || (action === 'collapse' || (this.isExpandAll && this.loadChildOnDemand) && !isRemoteData(this) && this.isSelfReference && isCountRequired(this))) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.getCurrentViewRecords().indexOf(record);\n row = gridRows[rowIndex];\n }\n else {\n rowIndex = +row.getAttribute('data-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n row.querySelectorAll('.e-treerowcell')[0].setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n }\n if (!isNullOrUndefined(targetEle) && targetEle.closest('.e-treerowcell').classList.contains('e-cellselectionbackground')) {\n targetEle.closest('.e-treerowcell').classList.remove('e-cellselectionbackground');\n targetEle.closest('.e-treerowcell').removeAttribute('aria-selected');\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[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 if (expandingArgs.requestType === 'collapse' && isCountRequired(this)) {\n var flatDataRecords = this.flatData.slice();\n for (var i = 0; i < flatDataRecords.length; i++) {\n if (flatDataRecords[i]['parentUniqueID'] === expandingArgs.data['uniqueID']) {\n flatDataRecords.splice(i, 1);\n i = i - 1;\n }\n }\n this.dataResults.result = flatDataRecords;\n return;\n }\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n if (isCountRequired(_this)) {\n _this.flatData = _this.dataResults.result;\n }\n if (_this.enableInfiniteScrolling && isCountRequired(_this)) {\n _this.flatData = _this.infiniteScrollData;\n }\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[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 if (isCountRequired(_this) && record[_this.childMapping] && record[_this.childMapping][i]) {\n currentData.splice(index + 1 + i, 0, childData[i]);\n }\n else {\n currentData.splice(index + 1 + i, record[_this.childMapping] &&\n record[_this.childMapping][i] ? 1 : 0, childData[i]);\n }\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 if (isCountRequired(_this) && _this.loadChildOnDemand && expandingArgs.requestType === 'expand') {\n _this.dataResults['expandRecord'] = {};\n _this.dataResults['expandRecord'] = expandingArgs.data;\n }\n _this.isExpandRefresh = true;\n var scrollHeightBeforeRefresh = _this.getContentTable().parentElement.scrollTop;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n if (_this.enableInfiniteScrolling) {\n _this.getContentTable().parentElement.scrollTop = scrollHeightBeforeRefresh;\n }\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return ((r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1))) || (r.querySelector('.e-gridrowindex' + record.index + 'level0' + '.e-summarycell')));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else {\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 var gridRowsObject = this.grid.getRowsObject();\n if (gridRowsObject[record.index].visible !== false) {\n gridRowsObject[record.index].visible = true;\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[i])) {\n rows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(rows[i]) && !this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[rows[i].rowIndex].visible = displayAction != 'none' ? true : false;\n if (\"parentItem\" in record) {\n if (gridRows[record.parentItem.index].getElementsByClassName('e-treegridcollapse').length) {\n gridRowsObject[record.index].visible = false;\n }\n }\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 for (var i = 0; i < detailrows.length; i++) {\n if (!isNullOrUndefined(detailrows[i]) && !this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[detailrows[i].rowIndex].visible = displayAction != 'none' ? true : false;\n detailrows[i].style.display = displayAction;\n }\n }\n if (!this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n this.grid.notify('refresh-Expand-and-Collapse', { rows: this.grid.getRowsObject() });\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[i];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[i].cells[this.treeColumnIndex];\n var row = rows[i];\n var rowData = this.grid.getRowsObject()[i].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = 'none';\n row = rows[i];\n var collapsingTd = rows[i].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[i].style.display = 'none';\n rightrows[i].style.display = 'none';\n if (!rows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[i];\n }\n else if (rightrows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[i];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[i].rowIndex] :\n this.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[i_1].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[i_1]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, true);\n }\n }\n }\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[i], cell: rows[i].cells[index],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[i], row: rows[i]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[j].columns) {\n cnt = this.getFrozenCount(cols[j].columns, cnt);\n }\n else {\n if (cols[j].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[f]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.modifiedRecords = 'modifiedRecords';\n /** @hidden */\n this.selectedRecords = 'selectedRecords';\n /** @hidden */\n this.selectedRows = 'selectedRows';\n /** @hidden */\n this.hasDropItem = true;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n var action = 'action';\n var dropPosition = 'dropPosition';\n var updateRowAndCellElements = 'updateRowAndCellElements';\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n this.parent[dropPosition] = this.dropPosition;\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n var index = this.parent.getRowByIndex(fromIndexes[i]).rowIndex;\n data[i] = this.parent.getCurrentViewRecords()[index];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n if (this.parent[action] === 'outdenting') {\n if (!isNullOrUndefined(data[0].parentItem)) {\n data[0].level = data[0].parentItem.level + 1;\n }\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[action] === 'indenting') {\n index = this.parent.treeColumnIndex;\n }\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][parentUniqueID]);\n var parentrow = this.parent.getRows()[toIndex];\n totalRecord.push(parentData);\n rows.push(parentrow);\n this.parent[updateRowAndCellElements](totalRecord, rows, index);\n }\n if (this.parent.enableImmutableMode && this.parent[action] === 'outdenting') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[action] === 'outdenting') {\n index = this.parent.treeColumnIndex;\n }\n var record = args.data[0];\n var row = this.parent.getRows()[fromIndexes[0]];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(record);\n rows.push(row);\n this.parent[updateRowAndCellElements](totalRecord, rows, index);\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.indentOutdentAction = function (record, request) {\n var tObj = this.parent;\n var action = 'action';\n var droppedIndex = 'dropIndex';\n var selectedItemIndex = -1;\n if (isNullOrUndefined(record) && this.parent.selectedRowIndex === -1) {\n return;\n }\n else {\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n this.selectedItem = isNullOrUndefined(record) ?\n tObj.getCurrentViewRecords()[selectedItemIndex] : record;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(this.selectedItem[primaryKeyField]);\n this.selectedRow = this.parent[this.selectedRows] = selectedItemIndex !== -1 ?\n this.parent.getSelectedRows()[0]\n : this.parent.grid.getRowByIndex(rowIndex);\n this.selectedRecord = this.parent[this.selectedRecords] = selectedItemIndex !== -1 ?\n tObj.getCurrentViewRecords()[selectedItemIndex]\n : this.selectedItem;\n if (request === 'indent') {\n var record_1 = tObj.getCurrentViewRecords()[this.selectedRow.rowIndex - 1];\n var dropIndex = void 0;\n if (this.selectedRow.rowIndex === 0 || this.selectedRow.rowIndex === -1 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level - record_1.level === 1) {\n return;\n }\n if (record_1.level > this.selectedRecord.level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record_1.parentItem.taskData) {\n dropIndex = i;\n if (tObj.enableVirtualization) {\n dropIndex = parseInt(tObj.getRows()[i].getAttribute('data-rowindex'), 10);\n }\n }\n }\n }\n else {\n dropIndex = this.selectedRow.rowIndex - 1;\n }\n if (this.parent.enableVirtualization && this.selectedRecord && !(record_1.level > this.selectedRecord.level)) {\n dropIndex = parseInt(this.selectedRow.getAttribute('data-rowindex'), 10) - 1;\n }\n tObj[action] = 'indenting';\n tObj[droppedIndex] = dropIndex;\n this.eventTrigger('indenting', dropIndex);\n }\n else if (request === 'outdent') {\n if (this.selectedRow.rowIndex === -1 || this.selectedRow.rowIndex === 0 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level === 0) {\n return;\n }\n var dropIndex = void 0;\n var parentItem = this.selectedRecord.parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].uniqueID === parentItem.uniqueID) {\n dropIndex = i;\n }\n }\n if (this.parent.enableVirtualization && this.selectedRecord) {\n dropIndex = parseInt(this.parent.getRows()[dropIndex].getAttribute('data-rowindex'), 10);\n }\n tObj[action] = 'outdenting';\n tObj[droppedIndex] = dropIndex;\n this.eventTrigger('outdenting', dropIndex);\n }\n }\n };\n RowDD.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var actionArgs = {\n action: action,\n cancel: false,\n data: [this.parent[this.selectedRecords]],\n row: this.parent[this.selectedRows]\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.action === 'indenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'child');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'child');\n }\n }\n else if (actionArgs.action === 'outdenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'below');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'below');\n }\n }\n }\n });\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n for (var i = 0; i < currentData.length; i++) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = getValue('uniqueIDCollection.' + currentData[i].parentUniqueID, this.parent);\n currentData[i].parentItem.index = updatedParent.index;\n }\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[i];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[i];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[j]) === -1) {\n dragRecords_1.splice(j, 0, childData[j]);\n childData[j].taskData = extend({}, childData[j]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping)\n && draggedRecord_1[tObj.parentIdMapping] !== null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[i].uniqueID, dragRecords[i], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[i];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n var keys = Object.keys(tempDataSource);\n for (var i = 0; i < keys.length; i++) {\n if (tempDataSource[i][this.parent.childMapping] === droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][i] = childRecords[i].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n else {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[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 if (this.parent.enableVirtualization) {\n rowTop = rowEle.getBoundingClientRect().top;\n }\n else {\n rowTop = rowPositionHeight + contentHeight + roundOff;\n }\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = errorVal.innerHTML;\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = content;\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (this.hasDropItem && dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) + ele.offsetWidth + 16;\n var spanLeft = !this.parent.enableRtl ? dropItemLeft : 0;\n dropItemSpan.style.left = spanLeft + \"px\";\n this.hasDropItem = false;\n }\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n var errorValue = document.querySelector('.errorValue');\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (errorelem) {\n if (dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) - errorelem.offsetWidth - 16;\n setStyleAttribute(errorValue, {\n paddingLeft: '0px'\n });\n if (!this.parent.enableRtl) {\n setStyleAttribute(dropItemSpan, {\n left: dropItemLeft + \"px\"\n });\n }\n }\n errorelem.remove();\n }\n this.hasDropItem = true;\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[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('data-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record, data) {\n var parentItem = record.parentItem;\n var selectedItemIndex = -1;\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n if (this.dropPosition === 'bottomSegment') {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = selectedItemIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(data[0][primaryKeyField]))\n : this.parent.getSelectedRowIndexes()[0];\n var selectedRecord = this.parent.getCurrentViewRecords()[rowIndex];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getCurrentViewRecords()[selectedItemIndex].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = tObj.selectedRowIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(args.data[0][primaryKeyField])) - 1\n : tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record, args.data);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n if (this.parent.enableVirtualization) {\n var index = this.parent.getRowByIndex(args.dropIndex).rowIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[index];\n }\n else {\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n this.parent[this.modifiedRecords].push(args.data[0], droppedRecord);\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_1 = function (i) {\n draggedRecord_2 = dragRecords[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 draggedRecord_2.level = droppedRecord.level;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_1(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[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 if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, tObj);\n }\n else {\n currentRecord = record.childRecords[i];\n }\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, this.parent);\n }\n else {\n currentRecord = record.childRecords[i];\n }\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping || tObj.enableImmutableMode) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[j][primaryKeyField] === deletedRow[primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n if (this.parent[this.modifiedRecords].indexOf(flatParentData) === -1 && !isNullOrUndefined(flatParentData)) {\n this.parent[this.modifiedRecords].push(flatParentData);\n }\n if (!isNullOrUndefined(flatParentData)) {\n this.updateModifiedRecords(flatParentData);\n }\n }\n };\n RowDD.prototype.updateModifiedRecords = function (record) {\n var parentData = getParentData(this.parent, record.parentUniqueID);\n if (!isNullOrUndefined(parentData)) {\n this.parent[this.modifiedRecords].push(parentData);\n this.updateModifiedRecords(parentData);\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[i_2][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[i_3][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the row drop settings of the TreeGrid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.nextInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.nextInfo.page } }, true);\n }\n else if (!isNullOrUndefined(notifyArgs.virtualInfo) && !notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n if (!((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent))\n || notifyArgs.virtualInfo.blockIndexes.length === 1) {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n for (var r = 0; r < rows.length; r++) {\n rows[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.movableCache = {};\n this.frozenRightCache = {};\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 this.movableCache = {};\n this.frozenRightCache = {};\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[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 this.parent.flatData.map(function (e) { return e.expanded = e.uniqueID === rowDetails.record.uniqueID &&\n e.expanded !== rowDetails.record.expanded ? rowDetails.record.expanded : e.expanded; });\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[primaryKeyField_1] === rowDetails.record[primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[action] === 'collapse') {\n targetEle = ret[row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[action] === 'expand') {\n targetEle = ret[row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[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.updatePageSize = function (pageingDetails) {\n var updateSize = pageingDetails.result.length;\n var gridPagerModule = this.parent.grid.pagerModule;\n if (this.parent.pageSettings.pageSizes === true) {\n if (gridPagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === gridPagerModule.pagerObj.getLocalizedLabel('All')) {\n gridPagerModule['pagerObj'].totalRecordsCount = updateSize;\n this.parent.grid.pageSettings.pageSize = updateSize;\n }\n }\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && ((this.parent.searchSettings.key !== this.parent.grid.searchSettings.key) ||\n (this.parent.filterSettings.columns.length !== this.parent.grid.filterSettings.columns.length))) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n this.updatePageSize(pageingDetails);\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.rowDeselected, this.refreshToolbar, this);\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowSelected, this.refreshToolbar);\n this.parent.off(events.rowDeselected, this.refreshToolbar);\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var toolbarElement = this.parent.grid.toolbarModule.getToolbar();\n if (!isNullOrUndefined(toolbarElement)) {\n var tObj = this.parent;\n var indentElement = void 0;\n var outdentElement = void 0;\n var indentID = tObj.element.id + '_gridcontrol_indent';\n var outdentID = tObj.element.id + '_gridcontrol_outdent';\n var indentEle = toolbarElement.querySelector('#' + indentID);\n var outdentEle = toolbarElement.querySelector('#' + outdentID);\n var row = args.row;\n var selectedrow = tObj.getSelectedRows()[0];\n if (!isNullOrUndefined(row[0])) {\n row = row[0];\n }\n row = (!isNullOrUndefined(selectedrow) && selectedrow.rowIndex !== row.rowIndex) ? selectedrow : row;\n if (indentEle !== null && outdentEle !== null) {\n indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n if (row.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[row.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[row.rowIndex - 1].level)) {\n indentElement.classList.add('e-hidden');\n }\n else {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === tObj.getCurrentViewRecords()[row.rowIndex - 1].level) {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === 0) {\n outdentElement.classList.add('e-hidden');\n }\n if (selectedItem.level !== 0) {\n outdentElement.classList.remove('e-hidden');\n }\n }\n }\n if (args['name'] === 'rowDeselected' && isNullOrUndefined(selectedrow) && !tObj.grid.isCheckBoxSelection) {\n if (this.parent.toolbar['includes']('Indent')) {\n indentElement.classList.add('e-hidden');\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n outdentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var indentOutdentAction = 'indentOutdentAction';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[indentOutdentAction](null, 'indent');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[indentOutdentAction](null, 'outdent');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[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 if (this.parent.allowRowDragAndDrop && data[d].childRecords.indexOf(this.parent.rowDragAndDropModule['draggedRecord']) !== -1 && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n childSort.splice(dragdIndex, 1);\n var dropdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n childSort.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n childSort.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { Grid, ContextMenu as cmenu } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, select } from '@syncfusion/ej2-base';\n/**\n * ContextMenu Module for TreeGrid\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent) {\n Grid.Inject(cmenu);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on('contextMenuOpen', this.contextMenuOpen, this);\n this.parent.on('contextMenuClick', this.contextMenuClick, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('contextMenuOpen', this.contextMenuOpen);\n this.parent.off('contextMenuClick', this.contextMenuClick);\n };\n ContextMenu.prototype.contextMenuOpen = function (args) {\n var addRow = select('#' + this.parent.element.id + '_gridcontrol_cmenu_AddRow', args.element);\n var editRecord = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Edit', args.element);\n var indent = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Indent', args.element);\n var outdent = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Outdent', args.element);\n if (addRow) {\n if (this.parent.grid.editSettings.allowAdding === false || this.parent.grid.isEdit) {\n addRow.style.display = 'none';\n }\n else {\n addRow.style.display = 'block';\n }\n }\n if ((this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch')\n && !(isNullOrUndefined(editRecord)) && !(editRecord.classList.contains('e-menu-hide'))) {\n editRecord.style.display = 'none';\n }\n var tObj = this.parent;\n var selectedrow = tObj.getSelectedRows()[0];\n if ((indent || outdent) && !isNullOrUndefined(selectedrow)) {\n var targetElement = args.event.target.closest('td');\n if (isNullOrUndefined(targetElement) || (!isNullOrUndefined(targetElement) && !targetElement.classList.contains('e-rowcell'))) {\n indent.style.display = outdent.style.display = 'none';\n }\n else {\n if (selectedrow.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indent.style.display = outdent.style.display = 'none';\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[selectedrow.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[selectedrow.rowIndex - 1].level) || this.parent.editSettings.mode === 'Batch'\n || this.parent.editSettings.mode === 'Cell') {\n indent.style.display = 'none';\n }\n else {\n indent.style.display = 'block';\n }\n if ((selectedItem.level === tObj.getCurrentViewRecords()[selectedrow.rowIndex - 1].level) && this.parent.editSettings.mode !== 'Batch'\n && this.parent.editSettings.mode !== 'Cell') {\n indent.style.display = 'block';\n }\n if ((selectedItem.level === 0) || this.parent.editSettings.mode === 'Batch'\n || this.parent.editSettings.mode === 'Cell') {\n outdent.style.display = 'none';\n }\n else {\n outdent.style.display = 'block';\n }\n }\n }\n }\n }\n else {\n if (tObj.grid.isEdit && isNullOrUndefined(selectedrow)) {\n indent.style.display = 'none';\n outdent.style.display = 'none';\n }\n }\n };\n ContextMenu.prototype.contextMenuClick = function (args) {\n if (args.item.id === 'Above' || args.item.id === 'Below' || args.item.id === 'Child') {\n this.parent.notify('savePreviousRowPosition', args);\n this.parent.setProperties({ editSettings: { newRowPosition: args.item.id } }, true);\n this.parent.editModule['isAddedRowByContextMenu'] = true;\n this.parent.addRecord();\n }\n if (args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Indent' || args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Outdent') {\n if (!isNullOrUndefined(this.parent.rowDragAndDropModule)) {\n var indentOutdentAction = 'indentOutdentAction';\n var action = args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Indent' ? 'indent' : 'outdent';\n this.parent.rowDragAndDropModule[indentOutdentAction](null, action);\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ContextMenu module name\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Gets the context menu element from the TreeGrid.\n *\n * @returns {Element} Return Context Menu root element.\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.parent.grid.contextMenuModule.getContextMenu();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend, setValue, getValue, merge } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\nimport { classList } from '@syncfusion/ej2-base';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.cell.cellIndex;\n var frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();\n if (frozenCols && args.columnObject.index > frozenCols) {\n actualCellIndex = actualCellIndex + frozenCols;\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n var colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;\n if (colCount === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n }\n else if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[this.addRowIndex][parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[this.addRowIndex][parentItem]) {\n parentUniqueID = this.batchRecords[this.addRowIndex][parentItem][uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[rowObjectIndex].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[this.addRowIndex][level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[rowObjectIndex].data = added;\n this.newBatchRowAdded = false;\n }\n if (this.parent.frozenColumns || this.parent.getFrozenColumns()\n && this.parent.grid.getRowsObject()[rowObjectIndex].edit === 'add') {\n merge(this.currentViewRecords[rowObjectIndex], this.parent.grid.getRowsObject()[rowObjectIndex].changes);\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[isTabLastRow] = false;\n return;\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) &&\n !this.parent.editModule['isAddedRowByContextMenu'] && (this.parent.grid.selectedRowIndex === -1 || this.parent.editModule['batchEditModule'].isAdd)) {\n this.selectedIndex = this.parent.editModule['selectedIndex'];\n this.addRowIndex = this.parent.editModule['addRowIndex'];\n this.addRowRecord = this.batchRecords.length ? this.batchRecords[this.selectedIndex]\n : this.parent.getCurrentViewRecords()[this.selectedIndex];\n }\n else {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.parent.editModule['addRowIndex'] = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex'])) {\n classList(this.parent.grid.getDataRows()[0], ['e-batchrow'], []);\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n var newlyAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var index = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[newlyAddedRecords.length - 1].getAttribute('data-rowindex'), 10);\n this.batchRecords.splice(index, 0, newlyAddedRecords[newlyAddedRecords.length - 1]);\n }\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('data-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[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('data-rowindex', i.toString());\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var mRows = this.parent.grid.getMovableDataRows();\n var freezeRightRows = this.parent.grid.getFrozenRightDataRows();\n for (var i = 0; i < mRows.length; i++) {\n mRows[i].setAttribute('data-rowindex', i.toString());\n if (freeze) {\n freezeRightRows[i].setAttribute('data-rowindex', i.toString());\n }\n }\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[addedRecords][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 if (index !== -1) {\n data.splice(index, 1);\n }\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchAddedRecords[i][parentItem] ? this.batchAddedRecords[i][parentItem][primaryKey]\n : this.batchAddedRecords[i][primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[index])) {\n var children = currentViewRecords[index][childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[j][primaryKey] === this.batchAddedRecords[i][primaryKey]) {\n currentViewRecords[index][childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[targetElement])) {\n var row = this.parent[targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[i][parentItem])) {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchDeletedRecords[i][parentItem][primaryKey]);\n var positionIndex = this.batchDeletedRecords[i][indexvalue] === 0 ? this.batchDeletedRecords[i][indexvalue] :\n this.batchDeletedRecords[i][indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[index])) {\n currentViewRecords[index][childRecords].splice(positionIndex, 0, this.batchDeletedRecords[i]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (this.parent.editModule['isAddedRowByMethod'] && addRecords.length && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n for (var i_1 = 0; i_1 < addRecords.length; i_1++) {\n var index_1 = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[i_1].getAttribute('data-rowindex'), 10);\n data.splice(index_1, 0, addRecords[i_1]);\n }\n }\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(currentViewRecords[0][primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[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 if (addRecords.length > 1 && this.parent.editModule['isAddedRowByContextMenu']) {\n var rowPosition = this.parent.editSettings.newRowPosition;\n this.parent.editSettings.newRowPosition = this.parent.editModule['previousNewRowPosition'];\n this.parent.editModule['previousNewRowPosition'] = rowPosition;\n }\n addRecords[i].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[i];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[i].parentItem)) {\n updateParentRow(primarykey_1, addRecords[i].parentItem, 'add', this.parent, this.isSelfReference, addRecords[i]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[i].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[i], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[i][parentItem]) &&\n (isNullOrUndefined(this.parent.editModule['addRowIndex']) || this.isSelfReference)) {\n var indexValue = currentViewRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(addRecords[i][parentItem][primarykey_1]);\n var children = currentViewRecords[indexValue][childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[j][primarykey_1] === addRecords[i][primarykey_1]) {\n currentViewRecords[indexValue][childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[deletedRecords].length) {\n for (i = 0; i < batchChanges[deletedRecords].length; i++) {\n editAction({ value: batchChanges[deletedRecords][i], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_2 = 0; i_2 < data.length; i_2++) {\n data[i_2][index] = i_2;\n setValue('uniqueIDCollection.' + data[i_2][uniqueID] + '.index', i_2, this.parent);\n if (!data[i_2][level]) {\n this.parent.parentData.push(data[i_2]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n this.parent.editModule['isAddedRowByContextMenu'] = false;\n }\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[i][index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n if (this.parent.getSelectedRows().length) {\n args[index] = this.parent.getSelectedRows()[0][rowIndex];\n }\n else {\n args[index] = this.batchIndex;\n }\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n this.isAddedRowByContextMenu = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.dataRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[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('data-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('data-rowindex');\n tr.setAttribute('data-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n else if (this.parent.editSettings.mode === 'Cell' && (!column.allowEditing || column.isPrimaryKey)) {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[promise];\n delete args[promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex) && this.prevAriaRowIndex !== '-1') {\n args.row.setAttribute('data-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['editedRowIndex'] = this.parent.grid.editModule.editModule['index'];\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEdit', false, this.parent.grid);\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else if (this.parent.getFrozenRightRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getFrozenRightRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getMovableRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getMovableRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['virtualData'] = {};\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n var mRow;\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {\n mRow = this.parent.grid.getRows()[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 (!this.parent.enableInfiniteScrolling) {\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[j];\n if (!isNullOrUndefined(data1)) {\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[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 if (!isNullOrUndefined(data2)) {\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 };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[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 if (!this.parent.enableVirtualization || this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n focussedElement.focus();\n }\n if (this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n this.parent.grid.contentModule['createEmptyRowdata']();\n }\n }\n }\n if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1 && this['isAddedRowByMethod'] && !this.isAddedRowByContextMenu) {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n var batchAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var newlyAddedRecord = void 0;\n if (batchAddedRecords.length) {\n for (var i = 0; i < batchAddedRecords.length; i++) {\n if (isNullOrUndefined(batchAddedRecords[i].uniqueID)) {\n newlyAddedRecord = batchAddedRecords[i];\n }\n }\n }\n var args = {\n action: 'add',\n data: newlyAddedRecord,\n index: index,\n seletedRow: 0\n };\n this.beginAddEdit(args);\n this.batchEditModule['batchAddRowRecord'].push(this.batchEditModule['addRowRecord']);\n this.batchEditModule['batchAddedRecords'].push(args['data']);\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[primaryKeys_2[0]] === args.data[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[data-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[data-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n if (args.index !== 0) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex;\n }\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[this.parent.grid.selectedRowIndex];\n if (this.parent.enableVirtualization && this.isAddedRowByContextMenu) {\n this.addRowRecord = this.parent.getCurrentViewRecords()[this.addRowIndex];\n }\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' && isNullOrUndefined(this.addRowRecord)\n && !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = void 0;\n if (this.parent.enableVirtualization && args.index !== 0) {\n currentData = this.parent.flatData;\n }\n else if (this.parent.editSettings.mode === 'Batch' && this['isAddedRowByMethod'] && !isNullOrUndefined(this.addRowIndex)) {\n currentData = this.batchEditModule['batchRecords'];\n }\n else {\n currentData = this.parent.grid.getCurrentViewRecords();\n }\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.flatData.indexOf(this.addRowRecord);\n this.selectedIndex = this.addRowIndex;\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? currentData.indexOf(currentData[0]) : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.parent.enableVirtualization && args.index !== 0 ? true :\n this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n if (!this.parent.isLocalData && this.parent.editModule.selectedIndex === -1) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = null;\n }\n else {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n }\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[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 * as literals from '../base/constant';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('data-rowindex'), 10) === index; })[0];\n };\n VirtualTreeContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualTreeContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualTreeContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.dataRowIndex), 10);\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[index]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[index].data : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if (this.recordAdded && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else if (this.parent.root.editSettings.newRowPosition !== 'Top' && this.parent.root.editModule.selectedIndex !== -1 || this.parent.root.editModule.selectedIndex !== -1) {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[action]('data-ready', this.onDataReady, this);\n this.parent[action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction(), _this.parent);\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[action]('edit-reset', this.resetIseditValue, this);\n this.parent[action]('get-virtual-data', this.getData, this);\n this.parent[action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n // To overcome the white space issue in last page when records collapsed\n if (this.parent.isFrozenGrid() && e.count < Object.keys(this.parent.dataSource).length) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length - 1) + 'px' : '100%';\n var height = (this.parent.getRowHeight() * e.count) -\n (this.parent.getRowHeight() * this.parent.pageSettings.pageSize);\n getValue('virtualEle', this).setVirtualHeight(height, width);\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.isFrozenGrid()) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || (this.isDataSourceChanged && (this.startIndex === -1 || this.startIndex === 0 && this['preStartIndex'] === 0))) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (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 this['editedRowIndex'] = e.index;\n var selector = '.e-row[data-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[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, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = addArgs.dataRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[isAdd]) {\n _super.prototype[resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.editModule.addRecord(null, this.parent.root.editModule.selectedIndex);\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = this.parent.root.editModule.selectedIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[preventEvent]) {\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 if (!_this.parent.isFrozenGrid()) {\n _this.virtualEle.adjustTable(x, _this.translateY);\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n this['scrollAfterEdit']();\n var info = scrollArgs.sentinel;\n var 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 var currentViewData = this.parent.currentViewData;\n var indexValue = 'index';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / 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 if (currentViewData.length && (currentViewData[0][indexValue] >= this.parent.pageSettings.pageSize / 2) &&\n ((currentViewData[0][indexValue] - this.startIndex) < (this.parent.pageSettings.pageSize / 2))) {\n this.startIndex = currentViewData[0][indexValue] - (this.parent.pageSettings.pageSize / 2);\n this.endIndex = this.startIndex + this.parent.pageSettings.pageSize;\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / 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('data-rowindex');\n }\n if (firsttdinx === 0) {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - this.parent.getRowHeight() * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\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 (currentViewData.length && this.startIndex > currentViewData[0][indexValue] &&\n ((this.startIndex - currentViewData[0][indexValue]) < (this.parent.pageSettings.pageSize / 2))) {\n this.startIndex = currentViewData[0][indexValue] + (this.parent.pageSettings.pageSize / 2);\n }\n if (scrollArgs.offset.top > (this.parent.getRowHeight() * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - this.parent.getRowHeight() * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (this.parent.getRowHeight() * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left') ||\n ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent))) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n this.requestType = 'virtualscroll';\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var isFrozen = this.parent.isFrozenGrid();\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent) || this.parent.isFrozenGrid()) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n if (isFrozen && isNullOrUndefined(this.requestType) && getValue('requestTypes', this).indexOf('isFrozen') === -1) {\n getValue('requestTypes', this).push('isFrozen');\n this.requestType = 'isFrozen';\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n if (getValue('requestTypes', this).indexOf('isFrozen') !== -1) {\n getValue('requestTypes', this).splice(getValue('requestTypes', this).indexOf('isFrozen'), 1);\n this.requestType = this.requestType === 'isFrozen' ? undefined : this.requestType;\n }\n if (isFrozen && (!this.isExpandCollapse || this.translateY === 0)) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(0, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.dataRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[restoreAdd].call(this);\n _super.prototype[ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback, instance) {\n var containerRect = 'containerRect';\n _super.prototype[containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n if (getValue('options', this).movableContainer) {\n var movableContainerRect = 'movableContainerRect';\n _super.prototype[movableContainerRect] = getValue('options', this).movableContainer.getBoundingClientRect();\n EventHandler.add(getValue('options', this).movableContainer, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n }\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback, instance) {\n var _this = this;\n //const delay: number = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n //const debounced100: Function = 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 = debounced50;\n if (current.axis === 'X') {\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n if ((instance.dataSource instanceof DataManager && instance.dataSource.dataSource.url !== undefined\n && !instance.dataSource.dataSource.offline && instance.dataSource.dataSource.url !== '') || isCountRequired(instance)) {\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({\n direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement\n });\n }\n }\n }\n _this[fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n if (this.parent.enableVirtualization && this.parent.selectionSettings.mode === 'Cell' ||\n this.parent.selectionSettings.mode === 'Row' && !this.parent.selectionSettings.persistSelection) {\n this.parent.grid.clearSelection();\n }\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' || requestType === 'searching' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length)) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else if (!this.parent['isExpandAll']) {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n startIndex = startIndex < 0 ? 0 : startIndex;\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (!parentGrid.isFrozenGrid()) {\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n //renderer.addRenderer(RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this)));\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parentGrid.height :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ColumnFreezeContentRenderer, FreezeContentRender, FreezeRowModelGenerator, RenderType } from '@syncfusion/ej2-grids';\nimport * as literals from '../base/constant';\nimport { ColumnVirtualFreezeRenderer, setDebounce, VirtualFreezeHdrRenderer, VirtualFreezeRenderer } from '@syncfusion/ej2-grids';\nimport { TreeInterSectionObserver, VirtualTreeContentRenderer } from './virtual-tree-content-render';\nimport { getValue } from '@syncfusion/ej2-base';\n/**\n * VirtualTreeFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar VirtualTreeFreezeRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeFreezeRenderer, _super);\n function VirtualTreeFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.renderTable = function () {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualTreeContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n FreezeContentRender.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var movableCont = this.getMovableContent();\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualRenderer.virtualEle.movableContent = this.virtualRenderer.movableContent\n = this.getPanel().querySelector('.' + literals.movableContent);\n this.virtualRenderer.virtualEle.renderMovableWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderMovablePlaceHolder();\n var tbl = movableCont.querySelector('table');\n this.virtualRenderer.virtualEle.movableTable = tbl;\n this.virtualRenderer.virtualEle.movableWrapper.appendChild(tbl);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movableWrapper);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movablePlaceholder);\n }\n this.virtualRenderer.virtualEle.wrapper.appendChild(this.getFrozenContent());\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newChild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n getValue('observer', this.virtualRenderer).options.debounceEvent = false;\n this.virtualRenderer['observers'] = new TreeInterSectionObserver(getValue('observer', this.virtualRenderer).element, getValue('observer', this.virtualRenderer).options, getValue('observer', this.virtualRenderer).movableEle);\n this.virtualRenderer['contents'] = this.getPanel().firstChild;\n _super.prototype.appendContent.call(this, target, newChild, e);\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {Row<Column>[]} returns the row\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.generateRows = function (data, e) {\n return _super.prototype.generateRows.call(this, data, e);\n };\n return VirtualTreeFreezeRenderer;\n}(VirtualFreezeRenderer));\nexport { VirtualTreeFreezeRenderer };\n/**\n * ColumnVirtualTreeFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar ColumnVirtualTreeFreezeRenderer = /** @class */ (function (_super) {\n __extends(ColumnVirtualTreeFreezeRenderer, _super);\n function ColumnVirtualTreeFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.serviceLoc = locator;\n _this.eventListener('on');\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n ColumnVirtualTreeFreezeRenderer.prototype.renderTable = function () {\n this.virtualRenderer = new VirtualTreeContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n ColumnFreezeContentRenderer.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var frozenRightCont = this.getFrozenRightContent();\n var frzCont = this.getFrozenContent();\n var movableCont = this.getMovableContent();\n if (this.parent.getFrozenMode() === 'Right') {\n frzCont = frozenRightCont;\n }\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n _super.prototype['renderVirtualFrozenLeft'].call(this, frzCont, movableCont);\n _super.prototype['renderVirtualFrozenRight'].call(this, frzCont, movableCont);\n _super.prototype['renderVirtualFrozenLeftRight'].call(this, frzCont, movableCont, frozenRightCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n ColumnVirtualTreeFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n getValue('observer', this.virtualRenderer).options.debounceEvent = false;\n this.virtualRenderer['observers'] = new TreeInterSectionObserver(getValue('observer', this.virtualRenderer).element, getValue('observer', this.virtualRenderer).options, getValue('observer', this.virtualRenderer).movableEle);\n this.virtualRenderer['contents'] = this.getPanel().firstChild;\n _super.prototype.appendContent.call(this, target, newChild, e);\n };\n return ColumnVirtualTreeFreezeRenderer;\n}(ColumnVirtualFreezeRenderer));\nexport { ColumnVirtualTreeFreezeRenderer };\n/**\n * VirtualTreeFreezeHdrRenderer is used to render the virtual table within the frozen and movable header table\n *\n * @hidden\n */\nvar VirtualTreeFreezeHdrRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeFreezeHdrRenderer, _super);\n function VirtualTreeFreezeHdrRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeHdrRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n };\n VirtualTreeFreezeHdrRenderer.prototype.rfshMovable = function () {\n _super.prototype.rfshMovable.call(this);\n };\n return VirtualTreeFreezeHdrRenderer;\n}(VirtualFreezeHdrRenderer));\nexport { VirtualTreeFreezeHdrRenderer };\n","import { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer, FreezeContentRender, FreezeRender, parentsUntil, RenderType } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass, getValue } from '@syncfusion/ej2-base';\nimport { ColumnVirtualTreeFreezeRenderer, VirtualTreeFreezeRenderer, VirtualTreeFreezeHdrRenderer } from '../renderer/virtual-tree-freeze-render';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n this.parent.grid.on('initial-load', this.instantiateRenderer, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n this.parent.grid.off('initial-load', this.instantiateRenderer);\n };\n Freeze.prototype.instantiateRenderer = function () {\n var renderer = getValue('serviceLocator', this.parent.grid).getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualTreeFreezeHdrRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new FreezeRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n if (this.parent.enableVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new FreezeContentRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n }\n if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new ColumnFreezeHeaderRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n if (this.parent.enableVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new ColumnVirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new ColumnFreezeContentRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n }\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getMovableDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getFrozenRightRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var rData = this.parent.grid.getRowObjectFromUID(rows[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' && (!e.target['classList'].contains('e-treegridcollapse') && !e.target['classList'].contains('e-treegridexpand'))) {\n this.parent.grid.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Grid, ColumnChooser as GridColumnChooser } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnChooser module\n *\n * @hidden\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance.\n */\n function ColumnChooser(parent) {\n Grid.Inject(GridColumnChooser);\n this.parent = parent;\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @returns {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n return this.parent.grid.columnChooserModule.openColumnChooser(X, Y);\n };\n /**\n * Destroys the openColumnChooser.\n *\n * @function destroy\n * @returns {void}\n */\n ColumnChooser.prototype.destroy = function () {\n //this.parent.grid.ColumnChooserModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnChooser module name\n */\n ColumnChooser.prototype.getModuleName = function () {\n return 'ColumnChooser';\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { Grid, InfiniteScroll as GridInfiniteScroll } from '@syncfusion/ej2-grids';\nimport { RowRenderer, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getExpandStatus } from '../utils';\n/**\n * TreeGrid Infinite Scroll module will handle Infinite Scrolling.\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function InfiniteScroll(parent) {\n this.parent = parent;\n Grid.Inject(GridInfiniteScroll);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.pagingActions, this.infinitePageAction, this);\n this.parent.on('infinite-remote-expand', this.infiniteRemoteExpand, this);\n this.parent.grid.on('delete-complete', this.infiniteDeleteHandler, this);\n this.parent.grid.on('infinite-edit-handler', this.infiniteEditHandler, this);\n this.parent.grid.on('infinite-crud-cancel', this.createRows, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('infinite-remote-expand', this.infiniteRemoteExpand);\n this.parent.grid.off('delete-complete', this.infiniteDeleteHandler);\n this.parent.grid.off('infinite-edit-handler', this.infiniteEditHandler);\n this.parent.off(events.pagingActions, this.infinitePageAction);\n this.parent.grid.off('infinite-crud-cancel', this.createRows);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds);\n };\n /**\n * Handles the Expand Collapse action for Remote data with infinite scrolling.\n *\n * @param {{ index: number, childData: ITreeData[] }} args - expanded row index and its child data\n * @param { number } args.index - expanded row index\n * @param { ITreeData[] } args.childData - child data of expanded row\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteRemoteExpand = function (args) {\n var rowObjects = this.parent.grid.getRowsObject();\n var locator = 'serviceLocator';\n var generateRows = 'generateRows';\n var serviceLocator = this.parent.grid.infiniteScrollModule[locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var rows = this.parent.getRows();\n var position = args.index === rows.length - 1 ? 'after' : 'before';\n var cols = this.parent.grid.getColumns();\n var childRowObjects = this.parent.grid.infiniteScrollModule[generateRows](args.childData, args);\n var childRowElements = [];\n for (var i = 0; i < childRowObjects.length; i++) {\n childRowElements.push(rowRenderer.render(childRowObjects[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 if (this.parent.grid.infiniteScrollModule['isInitialRender'] && !this.parent.initialRender) {\n this.parent.grid.pageSettings.currentPage = 1;\n }\n var initial = actions.some(function (value) { return value === actionArgs.requestType; });\n var initialRender = initial ? true : this.parent.initialRender ? true : false;\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n if (getValue('isPrinting', pageingDetails.actionArgs)) {\n pageingDetails.result = visualData;\n }\n else {\n var query = new Query();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var size = initialRender ?\n this.parent.grid.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :\n this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (!isNullOrUndefined(actionArgs)) {\n var lastIndex = getValue('lastIndex', this.parent.grid.infiniteScrollModule);\n var firstIndex = getValue('firstIndex', this.parent.grid.infiniteScrollModule);\n if (!isCache && actionArgs.requestType === 'delete') {\n var skip = lastIndex - actionArgs.data.length + 1;\n var take = actionArgs.data.length;\n query = query.skip(skip).take(take);\n }\n else if (isCache && actionArgs.requestType === 'delete' ||\n (actionArgs.requestType === 'save' && actionArgs.action === 'add')) {\n query = query.skip(firstIndex);\n query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if ((pageingDetails.actionArgs['action'] === 'expand' || pageingDetails.actionArgs['action'] === 'collapse') && this.parent.grid.pageSettings.currentPage !== 1) {\n current = 1;\n size = this.parent.grid.pageSettings.pageSize * this.parent.grid.pageSettings.currentPage;\n }\n query = query.page(current, size);\n }\n }\n else {\n query = query.page(current, size);\n }\n dm.dataSource.json = visualData;\n if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n pageingDetails.result = [actionArgs.data];\n }\n else {\n pageingDetails.result = dm.executeLocal(query);\n }\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * Handles the currentviewdata for delete operation.\n *\n * @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details\n * @param {InfiniteScrollArgs} args.e - scroller details while CRUD\n * @param {Object[]} args.result - data details while CRUD\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n var infiniteData = 'infiniteCurrentViewData';\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n var keys = Object.keys(infiniteCurrentViewData);\n if (args.e.requestType === 'delete' && args.result.length > 1) {\n for (var i = 1; i < args.result.length; i++) {\n infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[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]).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","filter","item","isSummaryRow","concat","isOffline","dm","ready","extendArray","array","obj","objArr","j","getPlainData","value","index","level","taskData","requireFilter","isHidden","el","style","window","getComputedStyle","display","visibility","editAction","details","control","isSelfReference","addRowIndex","selectedIndex","columnName","addRowRecord","batchChanges","action","getPrimaryKeyFieldNames","treeData","json","modifiedData","originalData","isSkip","editSettings","mode","editModule","getBatchChanges","addAct","currentViewRecords","getCurrentViewRecords","extend","newRowPosition","unshift","primaryKeys","currentdata","addAction","Array","k","_loop_1","prototype","hasOwnProperty","call","editedData","parentIdMapping","idMapping","splice","childMapping","updateParentRow","currentData_1","parentData","flatData","e","p","enableImmutableMode","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","child","index_1","currentRecords","map","enableVirtualization","updatedParent","getValue","parentUniqueID","sortSettings","indexOf","data","setRowData","row","getRowByIndex","getRows","getRowIndexByPrimaryKey","movableRow","frozenRows","getFrozenColumns","getMovableRowByIndex","index_2","treeColumnIndex","allowRowDragAndDrop","renderModule","cellRender","cell","cells","column","getColumns","requestType","RowModifier","Column","options","this","allowEditing","edit","disableHtmlEncode","allowReordering","showColumnMenu","allowSorting","allowResizing","merge","setProperties","clipboardModule","uid","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Predicate","_super","apply","Property","ChildProperty","FilterSettings","Collection","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","Grid","Inject","GridLogger","getModuleName","log","types","args","type","detailLists","cOp","check","success","message","generateMessage","replace","gridurl","substring","treeGridObj","dataStateChange","console","logType","treeLog","treeGrid","isPrimaryKey","treeGridDetails","mapping_fields_missing","opt","ERROR","rowDataBound","queryCellInfo","beforeDataBound","actionBegin","actionComplete","rowSelected","checkboxChange","rowDeselected","toolbarClick","beforeExcelExport","beforePdfExport","collapsed","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","crudAction","beginEdit","beginAdd","recordDoubleClick","cellSave","cellSaved","cellEdit","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","keyPressed","doubleTap","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","detailDataBound","rowDragStartHelper","rowsAdd","rowsRemove","rowdraging","rowDropped","rowDeselecting","movableContent","frozenContent","content","dataRowIndex","TreeClipboard","serviceLocator","_this","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getSelection","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","searchingRecords","addEventListener","on","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","removeEventListener","isDestroyed","off","checkBox","checkWrap","parentsUntil","querySelector","closest","selectCheckboxes","triggerChkChangeEvent","nextElementSibling","autoCheckHierarchy","checkBoxvalue","headerSelection","checkState","rowElement","checked","rowData","getCheckedRecords","events.checkboxChange","getCheckboxcolumnIndex","mappingUid","columnIndex","col","headerCelllength","getHeaderContent","getAttribute","headerElement","rowChkBox","createElement","className","attrs","createCheckBox","label","add","insertBefore","cloneNode","firstChild","renderColumnCheckbox","aria-label","setAttribute","checkboxState","allowTextWrap","width","checkbox","removeClass","container","containerELe","spanEle","innerHTML","divEle","appendChild","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","count","indeter","checkChildRecords","checkBoxRecord","hasFilteredChildRecords","checkAll","multiFilterCheckState","filterResult","rec","currentRecord","checkedRecord","recordIndex","checkboxRecord","tr","movableTr","getMovableDataRows","checkedIndex","checkBoxclass","chkstate","childLength","updatedData","forEach","getCheckedrecords","getCheckedRowIndexes","Print","GridPrint","events.printGridInit","printTreeGrid","printGrid","gridElement","events.queryCellInfo","events.rowDataBound","events.beforeDataBound","addClass","print","SearchSettings","SelectionSettings","Render","templateResult","columnTemplateResult","reactTemplateRender","allowPaging","pageSettings","pageSizeMode","enableCollapseAll","proxy_1","parentrec","cellElement","pad","filterLevel","totalIconsWidth","getColumnByUid","summaryRow","frozenColumns","enableColumnVirtualization","getColumnIndexByUid","emptyExpandIcon","styles","n","iconRequired","expandIcon","expand","updateTreeCell","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","field","notify","checkboxElement","parseInt","summaryData","template","rowTemplate","treeColumn","templateFn","colindex","templateCompiler","textContent","appendChildren","children","tempID","element","id","portals","isReact","result","refreshReactColumnTemplateByUid","columnUid","clearTemplate","undefined","rowsObj","getRowsObject","indent","getIndentCount","cellIndex","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","td","getCellFromIndex","refreshTD","treecell","DataManipulation","addedRecords","parentItems","taskIds","hierarchyData","storedIndex","sortedData","isSortAction","dataResults","updateParentRemoteData","beginSorting","updateData","events.remoteExpand","collectExpandingRecs","dataProcessor","isRemote","convertToFlatData","query","Query","filterKey","params","param","where","addParams","hasChildMapping","qry","clone","queries","executeQuery","then","DataUtil","distinct","httpRequest","statusText","setValue","zerothLevelData","dataManagerSuccess","hideSpinner","convertJSONData","tempData","selfData","mappingData","executeLocal","group","groupData","items","selfReferenceUpdate","createRecords","referenceData","shift","loadChildOnDemand","getUid","Math","ceil","random","rowDetails","isChild","gridRows","getContentTable","childRecord","targetEle","getElementsByClassName","getRowObjectFromUID","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","getDataModule","generateQuery","clonequries","fn","showSpinner","currentViewData","inx","haveChild","events.actionComplete","aggregates","gridQuery","aggregateQuery","summaryQuery","q","summaryModule","calculateSummaryValue","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","enableInfiniteScrolling","events.expanded","contentModule","currentInfo","prevInfo","loadNext","currentPage","nextInfo","page","parentRecords","treeGridData","currentData","dataObj","isExport","expresults","exportType","isPrinting","actionArgs","actionData","actionAddArgs","primaryKeyColumnName","dataValue","isLocalData","updateAction","filterQuery","searchQuery","results","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","sortComparer","bind","direction","sortBy","rowDragAndDropModule","dragdIndex","dropdIndex","sortArgs","temp","paging","printMode","actArgs","events.pagingActions","isCollapsedStatePersist","actualResults","dataResult","events.crudAction","events.batchSave","ToolbarItem","ContextMenuItems","PageSettings","AggregateColumn","intl","Internationalization","setFormatter","cultureName","format","skeleton","formatFn","getFormatFunction","getDateFormat","getNumberFormat","getFormatter","setTemplate","helper","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","indentOutdentAction","modifiedRecords","stackedHeader","objectEqualityChecker","old","current","isEqual","excludeKeys","Date","getTime","TreeGrid_1","TreeGridSelection","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","preRender","TreeGridLocale","initProperties","defaultLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","l10n","L10n","locale","sortByColumn","isMultiSort","sortModule","sortColumn","clearSorting","removeSortColumn","search","searchString","autoFitColumns","fieldNames","resizeModule","updateColumnModel","reorderColumns","fromFName","toFName","localeObject","gridLocale","treeGridLocale","load","printModule","treeGridkeyActionHandler","allowKeyboard","parentTarget","summaryElement","expandAll","collapseAll","expandCollapseRequest","parentElement","findnextRowElement","selectRow","row_1","clearSelection","findPreviousRowElement","rIndex","cIndex","summaryRowElement","previousElementSibling","infiniteScrollData","columnModel","isExpandAll","isCollapseAll","keyConfigs","ctrlDownArrow","ctrlUpArrow","ctrlShiftUpArrow","ctrlShiftDownArrow","downArrow","upArrow","offline","RemoteSaveAdaptor","wireEvents","EventHandler","mouseClickHandler","keyboardModule","KeyboardEvents","keyAction","eventName","tabIndex","requiredModules","modules","getGridColumns","member","toolbar","contextMenuItems","allowExcelExport","freezePresent","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","IsRowDDInjected","isIndentEnabled","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","refreshToolbarItems","renderComplete","destroyTemplateFn","toolbarElement","toolbarModule","getToolbar","indentID","outdentID","indentElement","outdentElement","afterGridRender","griddata","bindGridProperties","bindedDataSource","enableRtl","columnQueryMode","getActualProperties","pagerTemplate","infiniteScrollSettings","enableAltRow","enableHover","enableAutoFill","enableAdaptiveUI","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","enableVirtualMaskRow","triggerEvents","IsExpandCollapseClicked","bindGridEvents","rowSelecting","events.rowDeselecting","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","events.rowSelected","events.rowDeselected","resizeStop","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","resizeStart","resizing","columnDrag","columnDragStart","columnDrop","beforePrint","beforeCopy","beforePaste","TreeLogger","printComplete","actionFailure","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","dataBound","updateRowTemplate","updateAltRow","req","totalRows","persistSelection","callBackPromise_1","Deferred","beforeDataBoundArgs","resolve","callBackPromise","events.toolbarClick","toolbarargs","cellSelecting","cellselectingArgs","events.beginEdit","begineditArgs","isExpandRefresh","events.dataStateChange","isContextMenuOpen","contextitems","contextMenuModule","contextMenu","events.cellSave","cellsaveArgs","events.cellSaved","promise","events.cellEdit","events.batchAdd","events.beforeBatchSave","events.beforeBatchAdd","events.batchDelete","events.beforeBatchDelete","events.batchCancel","treeColumnRowTemplate","datacount","defaultQuery","JsonAdaptor","dataManager","isQueryInvokedFromData","callBackPromise_2","events.actionBegin","updateTreeGridModel","events.beginAdd","ag","showChildSummary","refresh","selectedItem_1","selectedRecords","dropIndex","dropPosition","selectedRows","isFrozenGrid","literals.movableContent","literals.frozenContent","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","events.rowdraging","rowDrop","events.rowDropped","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","iconCss","tooltipText","Search","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","enablePersistence","treeColumnTextAlign","textAlign","treeColumnField","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","updateTreeColumnTextAlign","closeEdit","getColumnByField","treeGridElement","hasTreeGridChild","removeListener","dataBind","document","getElementById","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","position","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","visibleRecords","getVisibleRecords","sHeight","scrollHeight","clientHeight","getContent","goToPage","pageNo","pagerModule","updateExternalMessage","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","rowInfo_1","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","updateExpandStateMapping","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollTop","getRowHeight","scrollBy","state","totalRecords","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","this_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","startIndex","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","removeAttribute","events.localPagedExpandCollapse","flatDataRecords","deff","data_1","length_1","scrollHeightBeforeRefresh","rows_1","args_1","collapseRemoteChild","movableRows","freezeRightRows","rows_2","getMovableRows","getFrozenRightRows","gridRowsObject","visibleRowCount","gridRow","rcell","arg","movablerows","rightrows","collapsingTd","collapse","expandElement","cRow","eRows","i_1","updateRowAndCellElements","updateResultModel","returnResult","filterByColumn","filterOperator","filterValue","predicate","matchCase","ignoreAccent","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","getSelectedRows","getMovableCellFromIndex","getFrozenRightRowByIndex","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","cnt","isFrozen","getSelectedRowCellIndexes","baseModule","treeModule","reorderRows","fromIndexes","toIndex","outdent","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","hasDropItem","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropRows","orderToIndex","dropData","totalRecord","parentrow","request","selectedItemIndex","selectedItem","selectedRow","selectedRecord","record_1","eventTrigger","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","removeLastrowBorder","islastRowIndex","isEmptyRow","updateIcon","rowEle","rowPositionHeight","addErrorElem","rowTop","toolHeight","offsetHeight","positionOffSet","getOffset","contentHeight","top","offsetTop","divide","getBoundingClientRect","topRowSegment","middleRowSegment","bottomRowSegment","mouseEvent","touchEvent","posy","pageY","changedTouches","isTopSegment","isMiddleRowSegment","isBottomRowSegment","removeChildBorder","removetopOrBottomBorder","addFirstrowBorder","removeErrorElem","topOrBottomBorder","addRemoveClasses","addLastRowborder","borderElem","targetRow","node","div","gridheaderEle","toolbarHeight","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","parentNode","removeChild","spanContent","paddingLeft","dropItemSpan","dropItemLeft","left","spanLeft","errorelem","errorValue","setStyleAttribute","border","box","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","updateModifiedRecords","i_2","i_3","draggedRecords","TreeVirtualRowModelGenerator","events.dataListener","getDatas","visualData","getDataInfo","getData","generateRows","virtualInfo","info","url","blockIndexes","getBlockIndexes","checkAndResetCache","clear","cache","movableCache","frozenRightCache","groups","getBlockSize","VirtualRowModelGenerator","Filter","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parent_1","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","childRec","isExist","parent_2","parent_3","fLevel","ExcelExport","GridExcel","updateExcelResultModel","exportRowDataBound","finalPageSetup","isCsv","Promise","isLocal","event.beforeExcelExport","customData","manipulateExportProperties","book","dtSrc","queryResult","flatsData","dataSrc","excelRow","excelrowobj","rowObj","filtercolumnlength","rowlength","excelRows","rowlevel","Boolean","expandedStatus","sublevelState","grouping","outlineLevel","isCollapsed","worksheets","pageSetup","isSummaryRowBelow","PdfExport","GridPdf","updatePdfResultModel","event.beforePdfExport","customsData","manipulatePdfProperties","flatDatas","paragraphIndent","Page","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","ret","pageRoot","pagedResults","newResults","t","res","updatePageSize","pageingDetails","updateSize","gridPagerModule","pageSizes","pagerObj","pagerdropdownModule","getLocalizedLabel","pageSize","propname","skip","size","take","dm_1","or","parents_1","floor","Toolbar","tool","refreshToolbar","toolbarClickHandler","indentEle","outdentEle","selectedrow","isCheckBoxSelection","Aggregate","GridAggregate","flatChildRecords","isSort","flatRecords","summaryLength","dataLength","getChildRecordsLength","summaryRowIndex","len_1","createSummaryItem","idx_1","currentIndex","summaryParent","length_2","itemData","summary","displayColumn","keys_1","getSummaryValues","summaryColumn","single","getFormatFromType","tempObj","requiresCount","summaryKey","sumData","toLowerCase","calculateAggregate","disp","value_1","summaryformat","Sort","GridSort","flatSortedData","updateModel","createdSortedRecords","sortParams","iterateSort","childSort","ColumnMenu","GridColumnMenu","getColumnMenu","columnMenuModule","ContextMenu","cmenu","addRow","editRecord","event","BatchEdit","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","isAdd","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","actualCellIndex","frozenCols","columnObject","getColumnByIndex","added","primaryKey_1","currentDataIndex","indexvalue","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","changes","batchIndex","primaryParent","childRecordCount","updateChildCount","updateRowIndex","focusModule","table","matrix","newlyAddedRecords","childs","primarykey","parentRowIndex","getRowElementByUID","totalCount","mRows","deleterecords","deleteUniqueID","positionIndex","updatedRecords","primarykey_1","addRecords","endIndex","rowPosition","indexValue","Edit","prevAriaRowIndex","isAddedRowByMethod","isAddedRowByContextMenu","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","events.keyPressed","lastCellTab","contentready","editActionEvents","events.doubleTap","gridDblClick","customCellSave","savePreviousRowPosition","events.beforeStartEdit","events.beforeBatchCancel","resetIsOnBatch","getRowPosition","doubleClickTarget","addArgs","applyFormValidation","eventArgs","treeObj","keyData","paramsLength","infiniteAddAction","rowObjects","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","getMovableRowsObject","isCache","enableCache","resetRowIndex","updateIndex","newRowIndex","dataIndex","infiniteCurrentViewData","infiniteScrollModule","isOnBatch","updateGridEditMode","keyPress","prom","celleditArgs","toolbarID","cellDetails","treeCell","afterCellSave","form","rowIndex_1","primaryKeys_1","isTabLastRow","update","fromTable","previousValue","editArgs","filterChoiceCount","excelSearchOperator","mRow","aggregateModule","destroyWidgets","formObj","restoreFocus","saveArgs","previousData","data1","treeColIndex","l","data2","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","focussedElement","activeElement","newFreezeRowObject","rightFrozenRows","errors","focus","newlyAddedRecord","seletedRow","beginAddEdit","primaryKeys_2","selector","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","editFormValidate","destroyForm","CommandColumn","Command","DetailRow","detailrow","dataBoundArg","detaildataBound","setIndentVisibility","childRowExpand","rowExpandCollapse","actioncomplete","detailele","elements","detailData","detailRowElement","detailElement","previousSibling","expandClass","classlist","gridClas","gridclass","newNo","detailClass","spann","updtdcolum","focusElement","VirtualTreeContentRenderer","locator","isExpandCollapse","translateY","maxiPage","recordAdded","preTranslate","isRemoteExpand","getModelGenerator","getMovableVirtualRowByIndex","getRowCollection","getFrozenRightVirtualRowByIndex","isMovable","isRowObject","isFrozenRight","startIdx","literals.dataRowIndex","rowCollection","events.virtualActionArgs","virtualOtherAction","events.indexModifier","setTop","nextSetResIndex","lastIndex","root","onDataReady","refreshContentRows","observers","observes","scrollArgs","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","onActionComplete","virtualEditSuccess","resetIseditValue","cancelEdit","toSelectRowOnContextOpen","refreshCell","cellFocus","getColumnOffset","setVirtualHeight","contents","debounceEvent","TreeInterSectionObserver","getPanel","getTranslateY","sTop","cHeight","isOnenter","initialRowTop","gridTop","containerRect","observer","generateCells","generateCell","rowId","cellType","colSpan","oIndex","foreignKeyData","isDataCell","isTemplate","rowID","Data","isForeignKey","isForeignColumn","Cell","withInRange","restoreEditState","restoreNewRow","isWheel","isIE","xAxis","axis","vgenerator","getColumnIndexes","columnIndexes","cOffsets","maxLeft","virtualEle","adjustTable","header","sentinel","outBuffer","upScroll","offset","downScroll","vHeight","lastInx","remains","rowPt","firsttdinx","isLastBlock","viewInfo","previousInfo","setColumnIndexesInView","loadSelf","appendContent","newChild","sentinelInfo","cBlock","cOffset","setWrapperWidth","name","getTable","VirtualContentRenderer","isWheeling","newPos","lastPos","timer","callback","onEnterCallback","instance","virtualScrollHandlers","movableContainer","debounced50","debounce","prevTop","prevLeft","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","VirtualTreeFreezeRenderer","freezeRowGenerator","FreezeRowModelGenerator","virtualRenderer","serviceLoc","getRenderer","virtualHdrRenderer","FreezeContentRender","setPanel","movableCont","getMovableContent","minHeight","literals.content","overflowX","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","renderMovablePlaceHolder","tbl","movableTable","movableWrapper","movablePlaceholder","wrapper","getFrozenContent","setDebounce","movableEle","VirtualFreezeRenderer","ColumnVirtualTreeFreezeRenderer","ColumnFreezeContentRenderer","frozenRightCont","getFrozenRightContent","frzCont","getFrozenMode","ColumnVirtualFreezeRenderer","VirtualTreeFreezeHdrRenderer","rfshMovable","VirtualFreezeHdrRenderer","Freeze","FreezeColumn","dblClickHandler","instantiateRenderer","FreezeRender","ColumnFreezeHeaderRenderer","frozenRightRows","frozenrows","rData","queryselector","freezeModule","ColumnChooser","GridColumnChooser","X","Y","InfiniteScroll","GridInfiniteScroll","infinitePageAction","infiniteRemoteExpand","infiniteDeleteHandler","infiniteEditHandler","createRows","collapseExpandInfinitechilds","rowRenderer","RowRenderer","childRowObjects","childRowElements","infiniteParents","actions","initialBlocks","maxBlocks","firstIndex","rowElms","keyField","removeRows","mRowElms","tbody","currentRows","getMovableVirtualContent","getFrozenVirtualContent","isFrozenRows","getMovableVirtualHeader","getFrozenVirtualHeader","newRow"],"mappings":"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yE,IACIc,WAAS,OACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,0BAAsB,GAC7CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,2BAAuB,GAC9CyE,IACIc,gBACDke,EAASzjB,UAAW,kBAAc,GACrCyE,IACIc,cACDke,EAASzjB,UAAW,aAAS,GAChCyE,IACIc,cACDke,EAASzjB,UAAW,kBAAc,GACrCyE,IACIc,WAAS,aACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,mBAAe,GACtCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACI4+B,aAAY19B,IACb8d,EAASzjB,UAAW,wBAAoB,GAC3CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,0BAAsB,GAC7CyE,IACI4+B,aAAYzhB,KACb6B,EAASzjB,UAAW,oBAAgB,GACvCyE,IACI4+B,aAAYC,oBACb7f,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,cACDke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACI4+B,aAAY9f,KACbE,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIiB,gBAAe0d,KAChBK,EAASzjB,UAAW,kBAAc,GACrCyE,IACI4+B,aAAYhgB,KACbI,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,cACDke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACI4+B,aAAY59B,IACbge,EAASzjB,UAAW,sBAAkB,GACzCyE,IACI4+B,aAAYhvB,KACboP,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,cACDke,EAASzjB,UAAW,eAAW,GAClCyE,IACIc,cACDke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,WAAS,YACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,cACDke,EAASzjB,UAAW,wBAAoB,GAC3CyE,IACIc,cACDke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,cACDke,EAASzjB,UAAW,mBAAe,GACtCyE,IACIc,WAAS,WACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,mBAAe,GACtCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,wBAAoB,GAC3CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,2BAAuB,GAC9CyE,IACIc,WAAS,SACVke,EAASzjB,UAAW,cAAU,GACjCyE,IACIc,WAAS,SACVke,EAASzjB,UAAW,aAAS,GAChCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,4BAAwB,GAC/CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,kCAA8B,GACrDyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,+BAA2B,GAClDyE,IACI4+B,aAAY7f,KACbC,EAASzjB,UAAW,8BAA0B,GACjDyE,IACIc,WAAS,QACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACI8+B,WACD9f,EAASzjB,UAAW,eAAW,GAClCyE,IACI8+B,WACD9f,EAASzjB,UAAW,YAAQ,GAC/By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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/enum.js","../src/treegrid/models/page-settings.js","../src/treegrid/models/summary.js","../src/treegrid/models/edit-settings.js","../src/treegrid/models/sort-settings.js","../src/treegrid/models/infinite-scroll-settings.js","../src/treegrid/base/treegrid.js","../src/treegrid/actions/reorder.js","../src/treegrid/actions/resize.js","../src/treegrid/actions/rowdragdrop.js","../src/treegrid/models/rowdrop-settings.js","../src/treegrid/renderer/virtual-row-model-generator.js","../src/treegrid/actions/filter.js","../src/treegrid/actions/excel-export.js","../src/treegrid/actions/pdf-export.js","../src/treegrid/actions/page.js","../src/treegrid/actions/toolbar.js","../src/treegrid/actions/summary.js","../src/treegrid/actions/sort.js","../src/treegrid/actions/column-menu.js","../src/treegrid/actions/context-menu.js","../src/treegrid/actions/batch-edit.js","../src/treegrid/actions/edit.js","../src/treegrid/actions/command-column.js","../src/treegrid/actions/detail-row.js","../src/treegrid/renderer/virtual-tree-content-render.js","../src/treegrid/actions/virtual-scroll.js","../src/treegrid/renderer/virtual-tree-freeze-render.js","../src/treegrid/actions/freeze-column.js","../src/treegrid/actions/column-chooser.js","../src/treegrid/actions/infinite-scroll.js"],"sourcesContent":["import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[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.filter(function (item) { return !item.isSummaryRow; });\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[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 && parentData.childRecords.length === parentData['Children'].length) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[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 (control.enableVirtualization && isNullOrUndefined(index_1)) {\n var updatedParent = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n record = updatedParent;\n }\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[index_1];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[key] !== child[key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[control.childMapping].indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[i][primaryKeys] === record[primaryKeys]) {\n data[i] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[index_2] ? row.cells[index_2]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\n }\n }\n }\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[i] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[i]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[i] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[i] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[i] === 'primary_column_missing' || type[i] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[i] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[i] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[i] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[i] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[i] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[i]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent, serviceLocator) {\n var _this = _super.call(this, parent.grid, serviceLocator) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n _this.serviceLocator = serviceLocator;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[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.searchingRecords = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = 'stackedHeader';\n var columnModel = 'columnModel';\n var columns = this.parent[stackedHeader] ? this.parent[columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = columns[col].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[j];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox', 'aria-label': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[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 && (!record.hasFilteredChildRecords || isNullOrUndefined(record.hasFilteredChildRecords)) && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check') {\n record.checkboxState = 'check';\n }\n else if ((checkChildRecords === 0 && indeter === 0) || (checkChildRecords === 0 && record.hasFilteredChildRecords && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check')) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n //This property used to maintain the check state of the currentview data after clear filtering\n var multiFilterCheckState = false;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n if (this.parent.grid.searchSettings.key.length) {\n this.searchingRecords = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n multiFilterCheckState = true;\n }\n else {\n multiFilterCheckState = false;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length && !this.parent.grid.searchSettings.key.length) {\n this.filteredList = [];\n }\n if (this.searchingRecords.length && !isNullOrUndefined(checkAll)) {\n this.filteredList = this.searchingRecords;\n }\n }\n var data;\n if (this.parent.filterModule.filteredResult.length === 0 && this.parent.getCurrentViewRecords().length === 0 &&\n this.parent.filterSettings.columns.length > 0) {\n data = this.filteredList;\n }\n else {\n data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList : this.parent.flatData;\n }\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[i].checkboxState === 'check') {\n continue;\n }\n if (multiFilterCheckState) {\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 tr = this.parent.getRows()[recordIndex];\n var checkbox;\n if (recordIndex > -1) {\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[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 var chkstate = checkState === 'check' ? 'checked' : checkState === 'uncheck' ? 'unchecked' : 'mixed';\n tr.querySelector('.e-treecheckselect').setAttribute('aria-checked', checkState === 'check' ? 'true' : checkState === 'uncheck' ? 'false' : 'mixed');\n tr.querySelector('.e-frame').setAttribute('title', 'checkbox' + chkstate);\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[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 && record.childRecords.length > 0) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[i].hasChildRecords) {\n _this.updateParentSelection(child[i]);\n }\n else if (!(child[i].hasChildRecords) && !isNullOrUndefined(child[i])) {\n _this.updateSelectedItems(child[i], child[i].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed) {\n args.row.style.display = 'none';\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0 && !parentrec[0].isSummaryRow) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (<ITreeData>args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n iconRequired = !(data.childRecords.length === 0);\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n args.cell.setAttribute('aria-expanded', data.expanded ? 'true' : 'false');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '7px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n if (args.column.template) {\n args.cell.innerHTML = null;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('data-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n args.column.template = treeColumn.template;\n args.column[templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[templateFn](args.data, this.parent, 'template', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[portals])) {\n this.parent.grid[portals] = this.parent[portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[i]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n var treecell = _this.parent.getRows()[j].cells[cellIndex];\n _this.cellRender({ data: rowsObj[j].data, cell: treecell, column: cell.column });\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = <DataManager>this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[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) && !((this.parent.loadChildOnDemand) && isCountRequired(this.parent) && !isNullOrUndefined(this.parent['dataResults']['expandRecord']))) {\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]) && !isCountRequired(this.parent)) ||\n ((currentData[this.parent.hasChildMapping]) && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n if (isNullOrUndefined(currentData[this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n this.parent['infiniteScrollData'].push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[primaryKeyColumnName])) {\n actionAddArgs.data[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n dataValue.taskData[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[getColumnByField](this.parent.grid.\n sortSettings.columns[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 if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&\n this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n modifiedData.splice(dragdIndex, 1);\n var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[isPdfExport] && (isNullOrUndefined(args[isCollapsedStatePersist])\n || args[isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[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[\"RowIndent\"] = 16] = \"RowIndent\";\n ContextMenuItems[ContextMenuItems[\"RowOutdent\"] = 17] = \"RowOutdent\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, addClass, createElement, EventHandler, isNullOrUndefined, extend, merge } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\nimport * as literals from '../base/constant';\n/**\n * Represents the TreeGrid component.\n * ```html\n * <div id='treegrid'></div>\n * <script>\n * var treegridObj = new TreeGrid({ allowPaging: true });\n * treegridObj.appendTo('#treegrid');\n * </script>\n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[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.infiniteScrollData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n var freezePresent = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'freeze';\n });\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount() || freezePresent.length) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'rowDragAndDrop';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[i].member === 'virtualscroll') {\n modules[i].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[root] = this[root] ? this[root] : this;\n this.grid.appendTo(gridContainer);\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this, this.grid.serviceLocator);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.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 this.grid.enableVirtualMaskRow = false; // Need to update in virtual mask row feature implementation.\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.IsExpandCollapseClicked = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))\n && (!isNullOrUndefined(args.data) && args.data['hasChildRecords'])) {\n args.cancel = true;\n return;\n }\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowDeselecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowDeselecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[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.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 if (args.action.requestType !== 'infiniteScroll') {\n _this.infiniteScrollData = [];\n }\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n this.treeColumnRowTemplate();\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[dataSource].json = extendArray(this.dataSource[dataSource].json);\n this.grid.dataSource[ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[ready])) {\n this.grid.dataSource[ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[dataSource].offline = true;\n dm[isDataAvailable] = true;\n dm[dataSource].json = e.result;\n dm[adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 && _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (args.action === 'filter') {\n if (_this.filterModule['currentFilterObject'] !== '' && _this.enableVirtualization && !_this.initialRender) {\n _this.expandAll();\n }\n }\n if (args.requestType === 'searching') {\n if (_this.searchSettings.key !== '' && _this.enableVirtualization && !_this.initialRender) {\n _this.expandAll();\n }\n }\n if (args.action === 'clearFilter' && _this.enableCollapseAll) {\n _this.collapseAll();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n if (_this.grid.isFrozenGrid() && _this.enableVirtualization && args['tableName'] === 'movable') {\n var movableContent = _this.grid.element.querySelector('.' + literals.movableContent);\n var frozenContent = _this.grid.element.querySelector('.' + literals.frozenContent);\n movableContent.style.height = frozenContent.style.height = 'auto';\n }\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (<DataManager>this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[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 case 'Indent':\n case ContextMenuItems.RowIndent:\n items.push({ text: this.l10n.getConstant('RowIndent'),\n target: '.e-content', iconCss: 'e-indent e-icons', id: this.element.id + '_gridcontrol_cmenu_Indent' });\n break;\n case 'Outdent':\n case ContextMenuItems.RowOutdent:\n items.push({ text: this.l10n.getConstant('RowOutdent'),\n target: '.e-content', iconCss: 'e-outdent e-icons', id: this.element.id + '_gridcontrol_cmenu_Outdent' });\n break;\n default:\n items.push(this.contextMenuItems[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 this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[i]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n if (this.columnModel.length == 0) {\n index = index === 0 ? -1 : index;\n }\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[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, this.columnModel.length - 1);\n treeGridColumn[prop] = column[i][prop];\n }\n else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {\n gridColumn[prop] = treeGridColumn[prop] = treeColumn[prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[prop] = treeGridColumn[prop] = column[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 this.TreeGridLocale();\n this.grid.toolbar = this.getGridToolbar();\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[prop].mode &&\n (newProp[prop].mode === 'Cell' || newProp[prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n this.ignoreInArrays(ignoreOnColumn, columns[i].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[index];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[rowIndex];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[prop] = gridColumns[i][prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[i].field && this.columnModel[i].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[i].template = temp;\n }\n }\n }\n var deepMerge = 'deepMerge';\n this[deepMerge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (!this.stackedHeader) {\n merge(this.columns, this.columnModel);\n }\n this[deepMerge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n dRows.push(rows[i]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n return this.grid.currentViewData;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[i]);\n if (!currentViewRecords[i].expanded) {\n i += findChildrenRecords(currentViewRecords[i]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if ((this.getBatchChanges()[this.changedRecords].length ||\n this.getBatchChanges()[this.deletedRecords].length || this.getBatchChanges()[this.addedRecords].length)\n && this.editSettings.showConfirmDialog) {\n var dialogObj = this.grid.editModule[obj];\n this.grid.editModule[showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo_1 = this.grid.getRowInfo(target);\n var record = rowInfo_1.rowData;\n if (this.grid.isFrozenGrid() && this.enableVirtualization && !Object.keys(record).length) {\n var freezeRows = 'freezeRows';\n record = this.grid.contentModule[freezeRows].filter(function (e) { return e.uid === rowInfo_1.row.getAttribute('data-uid'); })[0].data;\n }\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo_1.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo_1.row, record);\n }\n else {\n this.expandRow(rowInfo_1.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n _this.expandCollapse('expand', row, record);\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n var children = 'Children';\n if (!(isRemoteData(_this) && !isOffline(_this)) && (!isCountRequired(_this) || !isNullOrUndefined(record[children]))) {\n var collapseArgs = { data: record, row: row };\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, true);\n }\n _this.trigger(events.expanded, collapseArgs);\n }\n }\n });\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[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('data-rowindex')];\n }\n else {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(_this)) {\n _this.setHeightForFrozenContent();\n if (!isNullOrUndefined(_this.expandStateMapping)) {\n _this.updateExpandStateMapping(collapseArgs.data, false);\n }\n _this.trigger(events.collapsed, collapseArgs);\n if (_this.enableInfiniteScrolling) {\n var scrollHeight = _this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = _this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < _this.grid.getRowHeight() + +_this.height) {\n _this.grid.getContent().firstElementChild.scrollBy(0, _this.grid.getRowHeight());\n }\n }\n }\n }\n });\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[i][this.expandStateMapping] = state;\n editAction({ value: totalRecords[i], action: 'edit' }, this, this.isSelfReference, totalRecords[i].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[i].parentItem)) {\n var puniqueID_1 = record[i].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[i], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[i], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n 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 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) || (action === 'collapse' || (this.isExpandAll && this.loadChildOnDemand) && !isRemoteData(this) && this.isSelfReference && isCountRequired(this))) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.getCurrentViewRecords().indexOf(record);\n row = gridRows[rowIndex];\n }\n else {\n rowIndex = +row.getAttribute('data-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n row.querySelectorAll('.e-treerowcell')[0].setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n }\n if (!isNullOrUndefined(targetEle) && targetEle.closest('.e-treerowcell').classList.contains('e-cellselectionbackground')) {\n targetEle.closest('.e-treerowcell').classList.remove('e-cellselectionbackground');\n targetEle.closest('.e-treerowcell').removeAttribute('aria-selected');\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[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 if (expandingArgs.requestType === 'collapse' && isCountRequired(this)) {\n var flatDataRecords = this.flatData.slice();\n for (var i = 0; i < flatDataRecords.length; i++) {\n if (flatDataRecords[i]['parentUniqueID'] === expandingArgs.data['uniqueID']) {\n flatDataRecords.splice(i, 1);\n i = i - 1;\n }\n }\n this.dataResults.result = flatDataRecords;\n return;\n }\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n if (isCountRequired(_this)) {\n _this.flatData = _this.dataResults.result;\n }\n if (_this.enableInfiniteScrolling && isCountRequired(_this)) {\n _this.flatData = _this.infiniteScrollData;\n }\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[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 if (isCountRequired(_this) && record[_this.childMapping] && record[_this.childMapping][i]) {\n currentData.splice(index + 1 + i, 0, childData[i]);\n }\n else {\n currentData.splice(index + 1 + i, record[_this.childMapping] &&\n record[_this.childMapping][i] ? 1 : 0, childData[i]);\n }\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 if (isCountRequired(_this) && _this.loadChildOnDemand && expandingArgs.requestType === 'expand') {\n _this.dataResults['expandRecord'] = {};\n _this.dataResults['expandRecord'] = expandingArgs.data;\n }\n _this.isExpandRefresh = true;\n var scrollHeightBeforeRefresh = _this.getContentTable().parentElement.scrollTop;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n if (_this.enableInfiniteScrolling) {\n _this.getContentTable().parentElement.scrollTop = scrollHeightBeforeRefresh;\n }\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return ((r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1))) || (r.querySelector('.e-gridrowindex' + record.index + 'level0' + '.e-summarycell')));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else {\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 var gridRowsObject = this.grid.getRowsObject();\n if (!isNullOrUndefined(gridRowsObject[this.getCurrentViewRecords().indexOf(record)].visible) && gridRowsObject[this.getCurrentViewRecords().indexOf(record)].visible !== false) {\n gridRowsObject[this.getCurrentViewRecords().indexOf(record)].visible = true;\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[i])) {\n rows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(rows[i]) && !this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[rows[i].rowIndex].visible = displayAction != 'none' ? true : false;\n var parentRecord = getValue('uniqueIDCollection.' + record.parentUniqueID, this);\n if (!isNullOrUndefined(parentRecord) && gridRows[this.getCurrentViewRecords().indexOf(parentRecord)].getElementsByClassName('e-treegridcollapse').length) {\n gridRowsObject[this.getCurrentViewRecords().indexOf(record)].visible = false;\n }\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 for (var i = 0; i < detailrows.length; i++) {\n if (!isNullOrUndefined(detailrows[i]) && !this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[detailrows[i].rowIndex].visible = displayAction != 'none' ? true : false;\n detailrows[i].style.display = displayAction;\n }\n }\n if (!this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n this.grid.notify('refresh-Expand-and-Collapse', { rows: this.grid.getRowsObject() });\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[i];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[i].cells[this.treeColumnIndex];\n var row = rows[i];\n var rowData = this.grid.getRowsObject()[i].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = 'none';\n row = rows[i];\n var collapsingTd = rows[i].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[i].style.display = 'none';\n rightrows[i].style.display = 'none';\n if (!rows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[i];\n }\n else if (rightrows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[i];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[i].rowIndex] :\n this.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[i_1].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[i_1]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, true);\n }\n }\n }\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[i], cell: rows[i].cells[index],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[i], row: rows[i]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[j].columns) {\n cnt = this.getFrozenCount(cols[j].columns, cnt);\n }\n else {\n if (cols[j].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[f]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.modifiedRecords = 'modifiedRecords';\n /** @hidden */\n this.selectedRecords = 'selectedRecords';\n /** @hidden */\n this.selectedRows = 'selectedRows';\n /** @hidden */\n this.hasDropItem = true;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n var action = 'action';\n var dropPosition = 'dropPosition';\n var updateRowAndCellElements = 'updateRowAndCellElements';\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n this.parent[dropPosition] = this.dropPosition;\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n var index = this.parent.getRowByIndex(fromIndexes[i]).rowIndex;\n data[i] = this.parent.getCurrentViewRecords()[index];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n if (this.parent[action] === 'outdenting') {\n if (!isNullOrUndefined(data[0].parentItem)) {\n data[0].level = data[0].parentItem.level + 1;\n }\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[action] === 'indenting') {\n index = this.parent.treeColumnIndex;\n }\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][parentUniqueID]);\n var parentrow = this.parent.getRows()[toIndex];\n totalRecord.push(parentData);\n rows.push(parentrow);\n this.parent[updateRowAndCellElements](totalRecord, rows, index);\n }\n if (this.parent.enableImmutableMode && this.parent[action] === 'outdenting') {\n var index = void 0;\n if (this.parent.allowRowDragAndDrop) {\n index = this.parent.treeColumnIndex + 1;\n }\n else if (this.parent[action] === 'outdenting') {\n index = this.parent.treeColumnIndex;\n }\n var record = args.data[0];\n var row = this.parent.getRows()[fromIndexes[0]];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(record);\n rows.push(row);\n this.parent[updateRowAndCellElements](totalRecord, rows, index);\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.indentOutdentAction = function (record, request) {\n var tObj = this.parent;\n var action = 'action';\n var droppedIndex = 'dropIndex';\n var selectedItemIndex = -1;\n if (isNullOrUndefined(record) && this.parent.selectedRowIndex === -1) {\n return;\n }\n else {\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n this.selectedItem = isNullOrUndefined(record) ?\n tObj.getCurrentViewRecords()[selectedItemIndex] : record;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(this.selectedItem[primaryKeyField]);\n this.selectedRow = this.parent[this.selectedRows] = selectedItemIndex !== -1 ?\n this.parent.getSelectedRows()[0]\n : this.parent.grid.getRowByIndex(rowIndex);\n this.selectedRecord = this.parent[this.selectedRecords] = selectedItemIndex !== -1 ?\n tObj.getCurrentViewRecords()[selectedItemIndex]\n : this.selectedItem;\n if (request === 'indent') {\n var record_1 = tObj.getCurrentViewRecords()[this.selectedRow.rowIndex - 1];\n var dropIndex = void 0;\n if (this.selectedRow.rowIndex === 0 || this.selectedRow.rowIndex === -1 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level - record_1.level === 1) {\n return;\n }\n if (record_1.level > this.selectedRecord.level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record_1.parentItem.taskData) {\n dropIndex = i;\n if (tObj.enableVirtualization) {\n dropIndex = parseInt(tObj.getRows()[i].getAttribute('data-rowindex'), 10);\n }\n }\n }\n }\n else {\n dropIndex = this.selectedRow.rowIndex - 1;\n }\n if (this.parent.enableVirtualization && this.selectedRecord && !(record_1.level > this.selectedRecord.level)) {\n dropIndex = parseInt(this.selectedRow.getAttribute('data-rowindex'), 10) - 1;\n }\n tObj[action] = 'indenting';\n tObj[droppedIndex] = dropIndex;\n this.eventTrigger('indenting', dropIndex);\n }\n else if (request === 'outdent') {\n if (this.selectedRow.rowIndex === -1 || this.selectedRow.rowIndex === 0 ||\n tObj.getCurrentViewRecords()[this.selectedRow.rowIndex].level === 0) {\n return;\n }\n var dropIndex = void 0;\n var parentItem = this.selectedRecord.parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].uniqueID === parentItem.uniqueID) {\n dropIndex = i;\n }\n }\n if (this.parent.enableVirtualization && this.selectedRecord) {\n dropIndex = parseInt(this.parent.getRows()[dropIndex].getAttribute('data-rowindex'), 10);\n }\n tObj[action] = 'outdenting';\n tObj[droppedIndex] = dropIndex;\n this.eventTrigger('outdenting', dropIndex);\n }\n }\n };\n RowDD.prototype.eventTrigger = function (action, dropIndex) {\n var _this = this;\n var actionArgs = {\n action: action,\n cancel: false,\n data: [this.parent[this.selectedRecords]],\n row: this.parent[this.selectedRows]\n };\n this.parent.trigger(events.actionBegin, actionArgs, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (actionArgs.action === 'indenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'child');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'child');\n }\n }\n else if (actionArgs.action === 'outdenting') {\n if (_this.parent.enableVirtualization) {\n _this.reorderRows([parseInt(_this.selectedRow.getAttribute('data-rowindex'), 10)], dropIndex, 'below');\n }\n else {\n _this.reorderRows([_this.selectedRow.rowIndex], dropIndex, 'below');\n }\n }\n }\n });\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n for (var i = 0; i < currentData.length; i++) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = getValue('uniqueIDCollection.' + currentData[i].parentUniqueID, this.parent);\n currentData[i].parentItem.index = updatedParent.index;\n }\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[i];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[i];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[j]) === -1) {\n dragRecords_1.splice(j, 0, childData[j]);\n childData[j].taskData = extend({}, childData[j]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping)\n && draggedRecord_1[tObj.parentIdMapping] !== null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[i].uniqueID, dragRecords[i], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[i];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n var keys = Object.keys(tempDataSource);\n for (var i = 0; i < keys.length; i++) {\n if (tempDataSource[i][this.parent.childMapping] === droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][i] = childRecords[i].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n else {\n islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[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 if (this.parent.enableVirtualization) {\n rowTop = rowEle.getBoundingClientRect().top;\n }\n else {\n rowTop = rowPositionHeight + contentHeight + roundOff;\n }\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRows()[this.parent.getCurrentViewRecords().length - 1].getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = errorVal.innerHTML;\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = content;\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (this.hasDropItem && dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) + ele.offsetWidth + 16;\n var spanLeft = !this.parent.enableRtl ? dropItemLeft : 0;\n dropItemSpan.style.left = spanLeft + \"px\";\n this.hasDropItem = false;\n }\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n var errorValue = document.querySelector('.errorValue');\n var dropItemSpan = document.querySelector('.e-dropitemscount');\n if (errorelem) {\n if (dropItemSpan) {\n var dropItemLeft = parseInt(dropItemSpan.style.left, 10) - errorelem.offsetWidth - 16;\n setStyleAttribute(errorValue, {\n paddingLeft: '0px'\n });\n if (!this.parent.enableRtl) {\n setStyleAttribute(dropItemSpan, {\n left: dropItemLeft + \"px\"\n });\n }\n }\n errorelem.remove();\n }\n this.hasDropItem = true;\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[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('data-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record, data) {\n var parentItem = record.parentItem;\n var selectedItemIndex = -1;\n if (this.parent.enableVirtualization && this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.getSelectedRows()[0].rowIndex;\n }\n else if (this.parent.selectedRowIndex !== -1) {\n selectedItemIndex = this.parent.selectedRowIndex;\n }\n if (this.dropPosition === 'bottomSegment') {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = selectedItemIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(data[0][primaryKeyField]))\n : this.parent.getSelectedRowIndexes()[0];\n var selectedRecord = this.parent.getCurrentViewRecords()[rowIndex];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getCurrentViewRecords()[selectedItemIndex].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = tObj.selectedRowIndex === -1 ?\n (this.parent.grid.getRowIndexByPrimaryKey(args.data[0][primaryKeyField])) - 1\n : tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record, args.data);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n if (this.parent.enableVirtualization) {\n var index = this.parent.getRowByIndex(args.dropIndex).rowIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[index];\n }\n else {\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n this.parent[this.modifiedRecords].push(args.data[0], droppedRecord);\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_1 = function (i) {\n draggedRecord_2 = dragRecords[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 draggedRecord_2.level = droppedRecord.level;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_1(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[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 if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, tObj);\n }\n else {\n currentRecord = record.childRecords[i];\n }\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n if (!this.isMultipleGrid) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, this.parent);\n }\n else {\n currentRecord = record.childRecords[i];\n }\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping || tObj.enableImmutableMode) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[j][primaryKeyField] === deletedRow[primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n if (this.parent[this.modifiedRecords].indexOf(flatParentData) === -1 && !isNullOrUndefined(flatParentData)) {\n this.parent[this.modifiedRecords].push(flatParentData);\n }\n if (!isNullOrUndefined(flatParentData)) {\n this.updateModifiedRecords(flatParentData);\n }\n }\n };\n RowDD.prototype.updateModifiedRecords = function (record) {\n var parentData = getParentData(this.parent, record.parentUniqueID);\n if (!isNullOrUndefined(parentData)) {\n this.parent[this.modifiedRecords].push(parentData);\n this.updateModifiedRecords(parentData);\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[i_2][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[i_3][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the row drop settings of the TreeGrid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.nextInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.nextInfo.page } }, true);\n }\n else if (!isNullOrUndefined(notifyArgs.virtualInfo) && !notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n if (!((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent))\n || notifyArgs.virtualInfo.blockIndexes.length === 1) {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n for (var r = 0; r < rows.length; r++) {\n rows[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.movableCache = {};\n this.frozenRightCache = {};\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 this.movableCache = {};\n this.frozenRightCache = {};\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[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 this.parent.flatData.map(function (e) { return e.expanded = e.uniqueID === rowDetails.record.uniqueID &&\n e.expanded !== rowDetails.record.expanded ? rowDetails.record.expanded : e.expanded; });\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[primaryKeyField_1] === rowDetails.record[primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[action] === 'collapse') {\n targetEle = ret[row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[action] === 'expand') {\n targetEle = ret[row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[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.updatePageSize = function (pageingDetails) {\n var updateSize = pageingDetails.result.length;\n var gridPagerModule = this.parent.grid.pagerModule;\n if (this.parent.pageSettings.pageSizes === true) {\n if (gridPagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === gridPagerModule.pagerObj.getLocalizedLabel('All')) {\n gridPagerModule['pagerObj'].totalRecordsCount = updateSize;\n this.parent.grid.pageSettings.pageSize = updateSize;\n }\n }\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && ((this.parent.searchSettings.key !== this.parent.grid.searchSettings.key) ||\n (this.parent.filterSettings.columns.length !== this.parent.grid.filterSettings.columns.length))) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n this.updatePageSize(pageingDetails);\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.rowDeselected, this.refreshToolbar, this);\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowSelected, this.refreshToolbar);\n this.parent.off(events.rowDeselected, this.refreshToolbar);\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var toolbarElement = this.parent.grid.toolbarModule.getToolbar();\n if (!isNullOrUndefined(toolbarElement)) {\n var tObj = this.parent;\n var indentElement = void 0;\n var outdentElement = void 0;\n var indentID = tObj.element.id + '_gridcontrol_indent';\n var outdentID = tObj.element.id + '_gridcontrol_outdent';\n var indentEle = toolbarElement.querySelector('#' + indentID);\n var outdentEle = toolbarElement.querySelector('#' + outdentID);\n var row = args.row;\n var selectedrow = tObj.getSelectedRows()[0];\n if (!isNullOrUndefined(row[0])) {\n row = row[0];\n }\n row = (!isNullOrUndefined(selectedrow) && selectedrow.rowIndex !== row.rowIndex) ? selectedrow : row;\n if (indentEle !== null && outdentEle !== null) {\n indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n if (row.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[row.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[row.rowIndex - 1].level)) {\n indentElement.classList.add('e-hidden');\n }\n else {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === tObj.getCurrentViewRecords()[row.rowIndex - 1].level) {\n indentElement.classList.remove('e-hidden');\n }\n if (selectedItem.level === 0) {\n outdentElement.classList.add('e-hidden');\n }\n if (selectedItem.level !== 0) {\n outdentElement.classList.remove('e-hidden');\n }\n }\n }\n if (args['name'] === 'rowDeselected' && isNullOrUndefined(selectedrow) && !tObj.grid.isCheckBoxSelection) {\n if (this.parent.toolbar['includes']('Indent')) {\n indentElement.classList.add('e-hidden');\n }\n if (this.parent.toolbar['includes']('Outdent')) {\n outdentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n var indentOutdentAction = 'indentOutdentAction';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[indentOutdentAction](null, 'indent');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length\n && !isNullOrUndefined(tObj.rowDragAndDropModule)) {\n this.parent.rowDragAndDropModule[indentOutdentAction](null, 'outdent');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[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 if (this.parent.allowRowDragAndDrop && data[d].childRecords.indexOf(this.parent.rowDragAndDropModule['draggedRecord']) !== -1 && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n childSort.splice(dragdIndex, 1);\n var dropdIndex = childSort.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n childSort.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n childSort.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { Grid, ContextMenu as cmenu } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, select } from '@syncfusion/ej2-base';\n/**\n * ContextMenu Module for TreeGrid\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent) {\n Grid.Inject(cmenu);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on('contextMenuOpen', this.contextMenuOpen, this);\n this.parent.on('contextMenuClick', this.contextMenuClick, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('contextMenuOpen', this.contextMenuOpen);\n this.parent.off('contextMenuClick', this.contextMenuClick);\n };\n ContextMenu.prototype.contextMenuOpen = function (args) {\n var addRow = select('#' + this.parent.element.id + '_gridcontrol_cmenu_AddRow', args.element);\n var editRecord = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Edit', args.element);\n var indent = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Indent', args.element);\n var outdent = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Outdent', args.element);\n if (addRow) {\n if (this.parent.grid.editSettings.allowAdding === false || this.parent.grid.isEdit) {\n addRow.style.display = 'none';\n }\n else {\n addRow.style.display = 'block';\n }\n }\n if ((this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch')\n && !(isNullOrUndefined(editRecord)) && !(editRecord.classList.contains('e-menu-hide'))) {\n editRecord.style.display = 'none';\n }\n var tObj = this.parent;\n var selectedrow = tObj.getSelectedRows()[0];\n if ((indent || outdent) && !isNullOrUndefined(selectedrow)) {\n var targetElement = args.event.target.closest('td');\n if (isNullOrUndefined(targetElement) || (!isNullOrUndefined(targetElement) && !targetElement.classList.contains('e-rowcell'))) {\n indent.style.display = outdent.style.display = 'none';\n }\n else {\n if (selectedrow.rowIndex === 0 || tObj.getSelectedRowIndexes().length > 1) {\n indent.style.display = outdent.style.display = 'none';\n }\n else if (args['name'] !== 'rowDeselected' || (!isNullOrUndefined(selectedrow) && tObj.grid.isCheckBoxSelection)) {\n var selectedItem = tObj.getCurrentViewRecords()[selectedrow.rowIndex];\n if (!isNullOrUndefined(selectedItem)) {\n if ((selectedItem.level > tObj.getCurrentViewRecords()[selectedrow.rowIndex - 1].level) || this.parent.editSettings.mode === 'Batch'\n || this.parent.editSettings.mode === 'Cell') {\n indent.style.display = 'none';\n }\n else {\n indent.style.display = 'block';\n }\n if ((selectedItem.level === tObj.getCurrentViewRecords()[selectedrow.rowIndex - 1].level) && this.parent.editSettings.mode !== 'Batch'\n && this.parent.editSettings.mode !== 'Cell') {\n indent.style.display = 'block';\n }\n if ((selectedItem.level === 0) || this.parent.editSettings.mode === 'Batch'\n || this.parent.editSettings.mode === 'Cell') {\n outdent.style.display = 'none';\n }\n else {\n outdent.style.display = 'block';\n }\n }\n }\n }\n }\n else {\n if (tObj.grid.isEdit && isNullOrUndefined(selectedrow)) {\n indent.style.display = 'none';\n outdent.style.display = 'none';\n }\n }\n };\n ContextMenu.prototype.contextMenuClick = function (args) {\n if (args.item.id === 'Above' || args.item.id === 'Below' || args.item.id === 'Child') {\n this.parent.notify('savePreviousRowPosition', args);\n this.parent.setProperties({ editSettings: { newRowPosition: args.item.id } }, true);\n this.parent.editModule['isAddedRowByContextMenu'] = true;\n this.parent.addRecord();\n }\n if (args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Indent' || args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Outdent') {\n if (!isNullOrUndefined(this.parent.rowDragAndDropModule)) {\n var indentOutdentAction = 'indentOutdentAction';\n var action = args.item.id === this.parent.element.id + '_gridcontrol_cmenu_Indent' ? 'indent' : 'outdent';\n this.parent.rowDragAndDropModule[indentOutdentAction](null, action);\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ContextMenu module name\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Gets the context menu element from the TreeGrid.\n *\n * @returns {Element} Return Context Menu root element.\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.parent.grid.contextMenuModule.getContextMenu();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend, setValue, getValue, merge } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\nimport { classList } from '@syncfusion/ej2-base';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.cell.cellIndex;\n var frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();\n if (frozenCols && args.columnObject.index > frozenCols) {\n actualCellIndex = actualCellIndex + frozenCols;\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n var colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;\n if (colCount === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n }\n else if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[this.addRowIndex][parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[this.addRowIndex][parentItem]) {\n parentUniqueID = this.batchRecords[this.addRowIndex][parentItem][uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[rowObjectIndex].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[this.addRowIndex][level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[rowObjectIndex].data = added;\n this.newBatchRowAdded = false;\n }\n if (this.parent.frozenColumns || this.parent.getFrozenColumns()\n && this.parent.grid.getRowsObject()[rowObjectIndex].edit === 'add') {\n merge(this.currentViewRecords[rowObjectIndex], this.parent.grid.getRowsObject()[rowObjectIndex].changes);\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[isTabLastRow] = false;\n return;\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) &&\n !this.parent.editModule['isAddedRowByContextMenu'] && (this.parent.grid.selectedRowIndex === -1 || this.parent.editModule['batchEditModule'].isAdd)) {\n this.selectedIndex = this.parent.editModule['selectedIndex'];\n this.addRowIndex = this.parent.editModule['addRowIndex'];\n this.addRowRecord = this.batchRecords.length ? this.batchRecords[this.selectedIndex]\n : this.parent.getCurrentViewRecords()[this.selectedIndex];\n }\n else {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.parent.editModule['addRowIndex'] = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex'])) {\n classList(this.parent.grid.getDataRows()[0], ['e-batchrow'], []);\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n if (this.parent.editModule['isAddedRowByMethod'] && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n var newlyAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var index = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[newlyAddedRecords.length - 1].getAttribute('data-rowindex'), 10);\n this.batchRecords.splice(index, 0, newlyAddedRecords[newlyAddedRecords.length - 1]);\n }\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('data-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[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('data-rowindex', i.toString());\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var mRows = this.parent.grid.getMovableDataRows();\n var freezeRightRows = this.parent.grid.getFrozenRightDataRows();\n for (var i = 0; i < mRows.length; i++) {\n mRows[i].setAttribute('data-rowindex', i.toString());\n if (freeze) {\n freezeRightRows[i].setAttribute('data-rowindex', i.toString());\n }\n }\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[addedRecords][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 if (index !== -1) {\n data.splice(index, 1);\n }\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchAddedRecords[i][parentItem] ? this.batchAddedRecords[i][parentItem][primaryKey]\n : this.batchAddedRecords[i][primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[index])) {\n var children = currentViewRecords[index][childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[j][primaryKey] === this.batchAddedRecords[i][primaryKey]) {\n currentViewRecords[index][childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[targetElement])) {\n var row = this.parent[targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[i][parentItem])) {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchDeletedRecords[i][parentItem][primaryKey]);\n var positionIndex = this.batchDeletedRecords[i][indexvalue] === 0 ? this.batchDeletedRecords[i][indexvalue] :\n this.batchDeletedRecords[i][indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[index])) {\n currentViewRecords[index][childRecords].splice(positionIndex, 0, this.batchDeletedRecords[i]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (this.parent.editModule['isAddedRowByMethod'] && addRecords.length && !isNullOrUndefined(this.parent.editModule['addRowIndex']) && !this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n for (var i_1 = 0; i_1 < addRecords.length; i_1++) {\n var index_1 = parseInt(this.parent.getContentTable().getElementsByClassName('e-insertedrow')[i_1].getAttribute('data-rowindex'), 10);\n data.splice(index_1, 0, addRecords[i_1]);\n }\n }\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(currentViewRecords[0][primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n addRecords.reverse();\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[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 if (addRecords.length > 1 && this.parent.editModule['isAddedRowByContextMenu']) {\n var rowPosition = this.parent.editSettings.newRowPosition;\n this.parent.editSettings.newRowPosition = this.parent.editModule['previousNewRowPosition'];\n this.parent.editModule['previousNewRowPosition'] = rowPosition;\n }\n addRecords[i].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[i];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[i].parentItem)) {\n updateParentRow(primarykey_1, addRecords[i].parentItem, 'add', this.parent, this.isSelfReference, addRecords[i]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[i].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[i], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[i][parentItem]) &&\n (isNullOrUndefined(this.parent.editModule['addRowIndex']) || this.isSelfReference)) {\n var indexValue = currentViewRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(addRecords[i][parentItem][primarykey_1]);\n var children = currentViewRecords[indexValue][childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[j][primarykey_1] === addRecords[i][primarykey_1]) {\n currentViewRecords[indexValue][childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[deletedRecords].length) {\n for (i = 0; i < batchChanges[deletedRecords].length; i++) {\n editAction({ value: batchChanges[deletedRecords][i], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_2 = 0; i_2 < data.length; i_2++) {\n data[i_2][index] = i_2;\n setValue('uniqueIDCollection.' + data[i_2][uniqueID] + '.index', i_2, this.parent);\n if (!data[i_2][level]) {\n this.parent.parentData.push(data[i_2]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n if (this.parent.editModule['isAddedRowByContextMenu']) {\n this.parent.editModule['isAddedRowByContextMenu'] = false;\n }\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[i][index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n if (this.parent.getSelectedRows().length) {\n args[index] = this.parent.getSelectedRows()[0][rowIndex];\n }\n else {\n args[index] = this.batchIndex;\n }\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n this.isAddedRowByContextMenu = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.dataRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[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('data-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('data-rowindex');\n tr.setAttribute('data-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n else if (this.parent.editSettings.mode === 'Cell' && (!column.allowEditing || column.isPrimaryKey)) {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[promise];\n delete args[promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex) && this.prevAriaRowIndex !== '-1') {\n args.row.setAttribute('data-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['editedRowIndex'] = this.parent.grid.editModule.editModule['index'];\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEdit', false, this.parent.grid);\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else if (this.parent.getFrozenRightRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getFrozenRightRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getMovableRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getMovableRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n if (this.parent.enableVirtualization) {\n this.parent.grid.contentModule['virtualData'] = {};\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n var mRow;\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {\n mRow = this.parent.grid.getRows()[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 (!this.parent.enableInfiniteScrolling) {\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[j];\n if (!isNullOrUndefined(data1)) {\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[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 if (!isNullOrUndefined(data2)) {\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 };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[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 if (!this.parent.enableVirtualization || this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n focussedElement.focus();\n }\n if (this.parent.enableVirtualization && !Object.keys(this.parent.grid.contentModule['emptyRowData']).length) {\n this.parent.grid.contentModule['createEmptyRowdata']();\n }\n }\n }\n if (this.parent.editSettings.mode === 'Batch' && !isNullOrUndefined(this.addRowIndex) && this.addRowIndex !== -1 && this['isAddedRowByMethod'] && !this.isAddedRowByContextMenu) {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n var batchAddedRecords = this.parent.getBatchChanges()['addedRecords'];\n var newlyAddedRecord = void 0;\n if (batchAddedRecords.length) {\n for (var i = 0; i < batchAddedRecords.length; i++) {\n if (isNullOrUndefined(batchAddedRecords[i].uniqueID)) {\n newlyAddedRecord = batchAddedRecords[i];\n }\n }\n }\n var args = {\n action: 'add',\n data: newlyAddedRecord,\n index: index,\n seletedRow: 0\n };\n this.beginAddEdit(args);\n this.batchEditModule['batchAddRowRecord'].push(this.batchEditModule['addRowRecord']);\n this.batchEditModule['batchAddedRecords'].push(args['data']);\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[primaryKeys_2[0]] === args.data[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[data-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[data-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n if (args.index !== 0) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex;\n }\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[this.parent.grid.selectedRowIndex];\n if (this.parent.enableVirtualization && this.isAddedRowByContextMenu) {\n this.addRowRecord = this.parent.getCurrentViewRecords()[this.addRowIndex];\n }\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' && isNullOrUndefined(this.addRowRecord)\n && !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = void 0;\n if (this.parent.enableVirtualization && args.index !== 0) {\n currentData = this.parent.flatData;\n }\n else if (this.parent.editSettings.mode === 'Batch' && this['isAddedRowByMethod'] && !isNullOrUndefined(this.addRowIndex)) {\n currentData = this.batchEditModule['batchRecords'];\n }\n else {\n currentData = this.parent.grid.getCurrentViewRecords();\n }\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.flatData.indexOf(this.addRowRecord);\n this.selectedIndex = this.addRowIndex;\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? currentData.indexOf(currentData[0]) : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withinRange = this.parent.enableVirtualization && args.index !== 0 ? true :\n this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n if (!this.parent.isLocalData && this.parent.editModule.selectedIndex === -1) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = null;\n }\n else {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n }\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[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 * as literals from '../base/constant';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('data-rowindex'), 10) === index; })[0];\n };\n VirtualTreeContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualTreeContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualTreeContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var startIdx = parseInt(this.parent.getRows()[0].getAttribute(literals.dataRowIndex), 10);\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[index]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[index].data : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if (this.recordAdded && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else if (this.parent.root.editSettings.newRowPosition !== 'Top' && this.parent.root.editModule.selectedIndex !== -1 || this.parent.root.editModule.selectedIndex !== -1) {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[action]('data-ready', this.onDataReady, this);\n this.parent[action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction(), _this.parent);\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[action]('edit-reset', this.resetIseditValue, this);\n this.parent[action]('get-virtual-data', this.getData, this);\n this.parent[action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n // To overcome the white space issue in last page when records collapsed\n if (this.parent.isFrozenGrid() && e.count < Object.keys(this.parent.dataSource).length) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length - 1) + 'px' : '100%';\n var height = (this.parent.getRowHeight() * e.count) -\n (this.parent.getRowHeight() * this.parent.pageSettings.pageSize);\n getValue('virtualEle', this).setVirtualHeight(height, width);\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.isFrozenGrid()) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || (this.isDataSourceChanged && (this.startIndex === -1 || this.startIndex === 0 && this['preStartIndex'] === 0))) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (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 this['editedRowIndex'] = e.index;\n var selector = '.e-row[data-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[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, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = addArgs.dataRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('data-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('data-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[isAdd]) {\n _super.prototype[resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.editModule.addRecord(null, this.parent.root.editModule.selectedIndex);\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, dataRowIndex: this.dataRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.dataRowIndex = this.parent.root.editModule.selectedIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[preventEvent]) {\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 if (!_this.parent.isFrozenGrid()) {\n _this.virtualEle.adjustTable(x, _this.translateY);\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n this['scrollAfterEdit']();\n var info = scrollArgs.sentinel;\n var 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 var currentViewData = this.parent.currentViewData;\n var indexValue = 'index';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / 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 if (currentViewData.length && (currentViewData[0][indexValue] >= this.parent.pageSettings.pageSize / 2) &&\n ((currentViewData[0][indexValue] - this.startIndex) < (this.parent.pageSettings.pageSize / 2))) {\n this.startIndex = currentViewData[0][indexValue] - (this.parent.pageSettings.pageSize / 2);\n this.endIndex = this.startIndex + this.parent.pageSettings.pageSize;\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / 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('data-rowindex');\n }\n if (firsttdinx === 0) {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - this.parent.getRowHeight() * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\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 (currentViewData.length && this.startIndex > currentViewData[0][indexValue] &&\n ((this.startIndex - currentViewData[0][indexValue]) < (this.parent.pageSettings.pageSize / 2))) {\n this.startIndex = currentViewData[0][indexValue] + (this.parent.pageSettings.pageSize / 2);\n }\n if (scrollArgs.offset.top > (this.parent.getRowHeight() * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n if (this.parent.allowRowDragAndDrop) {\n this.translateY = scrollArgs.offset.top - this.parent.getRowHeight() * 2;\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (this.parent.getRowHeight() * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left') ||\n ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent))) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n this.requestType = 'virtualscroll';\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var isFrozen = this.parent.isFrozenGrid();\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent) || this.parent.isFrozenGrid()) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n if (isFrozen && isNullOrUndefined(this.requestType) && getValue('requestTypes', this).indexOf('isFrozen') === -1) {\n getValue('requestTypes', this).push('isFrozen');\n this.requestType = 'isFrozen';\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n if (getValue('requestTypes', this).indexOf('isFrozen') !== -1) {\n getValue('requestTypes', this).splice(getValue('requestTypes', this).indexOf('isFrozen'), 1);\n this.requestType = this.requestType === 'isFrozen' ? undefined : this.requestType;\n }\n if (isFrozen && (!this.isExpandCollapse || this.translateY === 0)) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(0, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.dataRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[restoreAdd].call(this);\n _super.prototype[ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback, instance) {\n var containerRect = 'containerRect';\n _super.prototype[containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n if (getValue('options', this).movableContainer) {\n var movableContainerRect = 'movableContainerRect';\n _super.prototype[movableContainerRect] = getValue('options', this).movableContainer.getBoundingClientRect();\n EventHandler.add(getValue('options', this).movableContainer, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback, instance), this);\n }\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback, instance) {\n var _this = this;\n //const delay: number = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n //const debounced100: Function = 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 = debounced50;\n if (current.axis === 'X') {\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n if ((instance.dataSource instanceof DataManager && instance.dataSource.dataSource.url !== undefined\n && !instance.dataSource.dataSource.offline && instance.dataSource.dataSource.url !== '') || isCountRequired(instance)) {\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({\n direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement\n });\n }\n }\n }\n _this[fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n if (this.parent.enableVirtualization && this.parent.selectionSettings.mode === 'Cell' ||\n this.parent.selectionSettings.mode === 'Row' && !this.parent.selectionSettings.persistSelection) {\n this.parent.grid.clearSelection();\n }\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' || requestType === 'searching' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length)) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else if (!this.parent['isExpandAll']) {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n startIndex = startIndex < 0 ? 0 : startIndex;\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (!parentGrid.isFrozenGrid()) {\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n //renderer.addRenderer(RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this)));\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parentGrid.height :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ColumnFreezeContentRenderer, FreezeContentRender, FreezeRowModelGenerator, RenderType } from '@syncfusion/ej2-grids';\nimport * as literals from '../base/constant';\nimport { ColumnVirtualFreezeRenderer, setDebounce, VirtualFreezeHdrRenderer, VirtualFreezeRenderer } from '@syncfusion/ej2-grids';\nimport { TreeInterSectionObserver, VirtualTreeContentRenderer } from './virtual-tree-content-render';\nimport { getValue } from '@syncfusion/ej2-base';\n/**\n * VirtualTreeFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar VirtualTreeFreezeRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeFreezeRenderer, _super);\n function VirtualTreeFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.renderTable = function () {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualTreeContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n FreezeContentRender.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var movableCont = this.getMovableContent();\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualRenderer.virtualEle.movableContent = this.virtualRenderer.movableContent\n = this.getPanel().querySelector('.' + literals.movableContent);\n this.virtualRenderer.virtualEle.renderMovableWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderMovablePlaceHolder();\n var tbl = movableCont.querySelector('table');\n this.virtualRenderer.virtualEle.movableTable = tbl;\n this.virtualRenderer.virtualEle.movableWrapper.appendChild(tbl);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movableWrapper);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movablePlaceholder);\n }\n this.virtualRenderer.virtualEle.wrapper.appendChild(this.getFrozenContent());\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newChild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n getValue('observer', this.virtualRenderer).options.debounceEvent = false;\n this.virtualRenderer['observers'] = new TreeInterSectionObserver(getValue('observer', this.virtualRenderer).element, getValue('observer', this.virtualRenderer).options, getValue('observer', this.virtualRenderer).movableEle);\n this.virtualRenderer['contents'] = this.getPanel().firstChild;\n _super.prototype.appendContent.call(this, target, newChild, e);\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {Row<Column>[]} returns the row\n * @hidden\n */\n VirtualTreeFreezeRenderer.prototype.generateRows = function (data, e) {\n return _super.prototype.generateRows.call(this, data, e);\n };\n return VirtualTreeFreezeRenderer;\n}(VirtualFreezeRenderer));\nexport { VirtualTreeFreezeRenderer };\n/**\n * ColumnVirtualTreeFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar ColumnVirtualTreeFreezeRenderer = /** @class */ (function (_super) {\n __extends(ColumnVirtualTreeFreezeRenderer, _super);\n function ColumnVirtualTreeFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.serviceLoc = locator;\n _this.eventListener('on');\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n ColumnVirtualTreeFreezeRenderer.prototype.renderTable = function () {\n this.virtualRenderer = new VirtualTreeContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n ColumnFreezeContentRenderer.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var frozenRightCont = this.getFrozenRightContent();\n var frzCont = this.getFrozenContent();\n var movableCont = this.getMovableContent();\n if (this.parent.getFrozenMode() === 'Right') {\n frzCont = frozenRightCont;\n }\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + literals.content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n _super.prototype['renderVirtualFrozenLeft'].call(this, frzCont, movableCont);\n _super.prototype['renderVirtualFrozenRight'].call(this, frzCont, movableCont);\n _super.prototype['renderVirtualFrozenLeftRight'].call(this, frzCont, movableCont, frozenRightCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n ColumnVirtualTreeFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n getValue('observer', this.virtualRenderer).options.debounceEvent = false;\n this.virtualRenderer['observers'] = new TreeInterSectionObserver(getValue('observer', this.virtualRenderer).element, getValue('observer', this.virtualRenderer).options, getValue('observer', this.virtualRenderer).movableEle);\n this.virtualRenderer['contents'] = this.getPanel().firstChild;\n _super.prototype.appendContent.call(this, target, newChild, e);\n };\n return ColumnVirtualTreeFreezeRenderer;\n}(ColumnVirtualFreezeRenderer));\nexport { ColumnVirtualTreeFreezeRenderer };\n/**\n * VirtualTreeFreezeHdrRenderer is used to render the virtual table within the frozen and movable header table\n *\n * @hidden\n */\nvar VirtualTreeFreezeHdrRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeFreezeHdrRenderer, _super);\n function VirtualTreeFreezeHdrRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualTreeFreezeHdrRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n };\n VirtualTreeFreezeHdrRenderer.prototype.rfshMovable = function () {\n _super.prototype.rfshMovable.call(this);\n };\n return VirtualTreeFreezeHdrRenderer;\n}(VirtualFreezeHdrRenderer));\nexport { VirtualTreeFreezeHdrRenderer };\n","import { ColumnFreezeContentRenderer, ColumnFreezeHeaderRenderer, FreezeContentRender, FreezeRender, parentsUntil, RenderType } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass, getValue } from '@syncfusion/ej2-base';\nimport { ColumnVirtualTreeFreezeRenderer, VirtualTreeFreezeRenderer, VirtualTreeFreezeHdrRenderer } from '../renderer/virtual-tree-freeze-render';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n this.parent.grid.on('initial-load', this.instantiateRenderer, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n this.parent.grid.off('initial-load', this.instantiateRenderer);\n };\n Freeze.prototype.instantiateRenderer = function () {\n var renderer = getValue('serviceLocator', this.parent.grid).getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualTreeFreezeHdrRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new FreezeRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n if (this.parent.enableVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new FreezeContentRender(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n }\n if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new ColumnFreezeHeaderRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n if (this.parent.enableVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new ColumnVirtualTreeFreezeRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n else {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new ColumnFreezeContentRenderer(getValue('grid', this.parent), getValue('serviceLocator', this.parent.grid))]);\n }\n }\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getMovableDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getFrozenRightRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var rData = this.parent.grid.getRowObjectFromUID(rows[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' && (!e.target['classList'].contains('e-treegridcollapse') && !e.target['classList'].contains('e-treegridexpand'))) {\n this.parent.grid.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Grid, ColumnChooser as GridColumnChooser } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnChooser module\n *\n * @hidden\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance.\n */\n function ColumnChooser(parent) {\n Grid.Inject(GridColumnChooser);\n this.parent = parent;\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @returns {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n return this.parent.grid.columnChooserModule.openColumnChooser(X, Y);\n };\n /**\n * Destroys the openColumnChooser.\n *\n * @function destroy\n * @returns {void}\n */\n ColumnChooser.prototype.destroy = function () {\n //this.parent.grid.ColumnChooserModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnChooser module name\n */\n ColumnChooser.prototype.getModuleName = function () {\n return 'ColumnChooser';\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { Grid, InfiniteScroll as GridInfiniteScroll } from '@syncfusion/ej2-grids';\nimport { RowRenderer, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getExpandStatus } from '../utils';\n/**\n * TreeGrid Infinite Scroll module will handle Infinite Scrolling.\n *\n * @hidden\n */\nvar InfiniteScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function InfiniteScroll(parent) {\n this.parent = parent;\n Grid.Inject(GridInfiniteScroll);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(events.pagingActions, this.infinitePageAction, this);\n this.parent.on('infinite-remote-expand', this.infiniteRemoteExpand, this);\n this.parent.grid.on('delete-complete', this.infiniteDeleteHandler, this);\n this.parent.grid.on('infinite-edit-handler', this.infiniteEditHandler, this);\n this.parent.grid.on('infinite-crud-cancel', this.createRows, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('infinite-remote-expand', this.infiniteRemoteExpand);\n this.parent.grid.off('delete-complete', this.infiniteDeleteHandler);\n this.parent.grid.off('infinite-edit-handler', this.infiniteEditHandler);\n this.parent.off(events.pagingActions, this.infinitePageAction);\n this.parent.grid.off('infinite-crud-cancel', this.createRows);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandInfinitechilds);\n };\n /**\n * Handles the Expand Collapse action for Remote data with infinite scrolling.\n *\n * @param {{ index: number, childData: ITreeData[] }} args - expanded row index and its child data\n * @param { number } args.index - expanded row index\n * @param { ITreeData[] } args.childData - child data of expanded row\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteRemoteExpand = function (args) {\n var rowObjects = this.parent.grid.getRowsObject();\n var locator = 'serviceLocator';\n var generateRows = 'generateRows';\n var serviceLocator = this.parent.grid.infiniteScrollModule[locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var rows = this.parent.getRows();\n var position = args.index === rows.length - 1 ? 'after' : 'before';\n var cols = this.parent.grid.getColumns();\n var childRowObjects = this.parent.grid.infiniteScrollModule[generateRows](args.childData, args);\n var childRowElements = [];\n for (var i = 0; i < childRowObjects.length; i++) {\n childRowElements.push(rowRenderer.render(childRowObjects[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 if (this.parent.grid.infiniteScrollModule['isInitialRender'] && !this.parent.initialRender) {\n this.parent.grid.pageSettings.currentPage = 1;\n }\n var initial = actions.some(function (value) { return value === actionArgs.requestType; });\n var initialRender = initial ? true : this.parent.initialRender ? true : false;\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n if (getValue('isPrinting', pageingDetails.actionArgs)) {\n pageingDetails.result = visualData;\n }\n else {\n var query = new Query();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var size = initialRender ?\n this.parent.grid.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :\n this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (!isNullOrUndefined(actionArgs)) {\n var lastIndex = getValue('lastIndex', this.parent.grid.infiniteScrollModule);\n var firstIndex = getValue('firstIndex', this.parent.grid.infiniteScrollModule);\n if (!isCache && actionArgs.requestType === 'delete') {\n var skip = lastIndex - actionArgs.data.length + 1;\n var take = actionArgs.data.length;\n query = query.skip(skip).take(take);\n }\n else if (isCache && actionArgs.requestType === 'delete' ||\n (actionArgs.requestType === 'save' && actionArgs.action === 'add')) {\n query = query.skip(firstIndex);\n query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if ((pageingDetails.actionArgs['action'] === 'expand' || pageingDetails.actionArgs['action'] === 'collapse') && this.parent.grid.pageSettings.currentPage !== 1) {\n current = 1;\n size = this.parent.grid.pageSettings.pageSize * this.parent.grid.pageSettings.currentPage;\n }\n query = query.page(current, size);\n }\n }\n else {\n query = query.page(current, size);\n }\n dm.dataSource.json = visualData;\n if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n pageingDetails.result = [actionArgs.data];\n }\n else {\n pageingDetails.result = dm.executeLocal(query);\n }\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * Handles the currentviewdata for delete operation.\n *\n * @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details\n * @param {InfiniteScrollArgs} args.e - scroller details while CRUD\n * @param {Object[]} args.result - data details while CRUD\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n var infiniteData = 'infiniteCurrentViewData';\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n var keys = Object.keys(infiniteCurrentViewData);\n if (args.e.requestType === 'delete' && args.result.length > 1) {\n for (var i = 1; i < args.result.length; i++) {\n infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[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]).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","filter","item","isSummaryRow","concat","isOffline","dm","ready","extendArray","array","obj","objArr","j","getPlainData","value","index","level","taskData","requireFilter","isHidden","el","style","window","getComputedStyle","display","visibility","editAction","details","control","isSelfReference","addRowIndex","selectedIndex","columnName","addRowRecord","batchChanges","action","getPrimaryKeyFieldNames","treeData","json","modifiedData","originalData","isSkip","editSettings","mode","editModule","getBatchChanges","addAct","currentViewRecords","getCurrentViewRecords","extend","newRowPosition","unshift","primaryKeys","currentdata","addAction","Array","k","_loop_1","prototype","hasOwnProperty","call","editedData","parentIdMapping","idMapping","splice","childMapping","updateParentRow","currentData_1","parentData","flatData","e","p","enableImmutableMode","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","child","index_1","currentRecords","map","enableVirtualization","updatedParent","getValue","parentUniqueID","sortSettings","indexOf","data","setRowData","row","getRowByIndex","getRows","getRowIndexByPrimaryKey","movableRow","frozenRows","getFrozenColumns","getMovableRowByIndex","index_2","treeColumnIndex","allowRowDragAndDrop","renderModule","cellRender","cell","cells","column","getColumns","requestType","RowModifier","Column","options","this","allowEditing","edit","disableHtmlEncode","allowReordering","showColumnMenu","allowSorting","allowResizing","merge","setProperties","clipboardModule","uid","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Predicate","_super","apply","Property","ChildProperty","FilterSettings","Collection","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","Grid","Inject","GridLogger","getModuleName","log","types","args","type","detailLists","cOp","check","success","message","generateMessage","replace","gridurl","substring","treeGridObj","dataStateChange","console","logType","treeLog","treeGrid","isPrimaryKey","treeGridDetails","mapping_fields_missing","opt","ERROR","rowDataBound","queryCellInfo","beforeDataBound","actionBegin","actionComplete","rowSelected","checkboxChange","rowDeselected","toolbarClick","beforeExcelExport","beforePdfExport","collapsed","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","crudAction","beginEdit","beginAdd","recordDoubleClick","cellSave","cellSaved","cellEdit","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","keyPressed","doubleTap","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","detailDataBound","rowDragStartHelper","rowsAdd","rowsRemove","rowdraging","rowDropped","rowDeselecting","movableContent","frozenContent","content","dataRowIndex","TreeClipboard","serviceLocator","_this","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getSelection","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","searchingRecords","addEventListener","on","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","removeEventListener","isDestroyed","off","checkBox","checkWrap","parentsUntil","querySelector","closest","selectCheckboxes","triggerChkChangeEvent","nextElementSibling","autoCheckHierarchy","checkBoxvalue","headerSelection","checkState","rowElement","checked","rowData","getCheckedRecords","events.checkboxChange","getCheckboxcolumnIndex","mappingUid","columnIndex","col","headerCelllength","getHeaderContent","getAttribute","headerElement","rowChkBox","createElement","className","attrs","createCheckBox","label","add","insertBefore","cloneNode","firstChild","renderColumnCheckbox","aria-label","setAttribute","checkboxState","allowTextWrap","width","checkbox","removeClass","container","containerELe","spanEle","innerHTML","divEle","appendChild","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","count","indeter","checkChildRecords","checkBoxRecord","hasFilteredChildRecords","checkAll","multiFilterCheckState","filterResult","rec","currentRecord","checkedRecord","recordIndex","checkboxRecord","tr","movableTr","getMovableDataRows","checkedIndex","checkBoxclass","chkstate","childLength","updatedData","forEach","getCheckedrecords","getCheckedRowIndexes","Print","GridPrint","events.printGridInit","printTreeGrid","printGrid","gridElement","events.queryCellInfo","events.rowDataBound","events.beforeDataBound","addClass","print","SearchSettings","SelectionSettings","Render","templateResult","columnTemplateResult","reactTemplateRender","allowPaging","pageSettings","pageSizeMode","enableCollapseAll","proxy_1","parentrec","cellElement","pad","filterLevel","totalIconsWidth","getColumnByUid","summaryRow","frozenColumns","enableColumnVirtualization","getColumnIndexByUid","emptyExpandIcon","styles","n","iconRequired","expandIcon","expand","updateTreeCell","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","field","notify","checkboxElement","parseInt","summaryData","template","rowTemplate","treeColumn","templateFn","colindex","templateCompiler","textContent","appendChildren","children","tempID","element","id","portals","isReact","result","refreshReactColumnTemplateByUid","columnUid","clearTemplate","undefined","rowsObj","getRowsObject","indent","getIndentCount","cellIndex","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","td","getCellFromIndex","refreshTD","treecell","DataManipulation","addedRecords","parentItems","taskIds","hierarchyData","storedIndex","sortedData","isSortAction","dataResults","updateParentRemoteData","beginSorting","updateData","events.remoteExpand","collectExpandingRecs","dataProcessor","isRemote","convertToFlatData","query","Query","filterKey","params","param","where","addParams","hasChildMapping","qry","clone","queries","executeQuery","then","DataUtil","distinct","httpRequest","statusText","setValue","zerothLevelData","dataManagerSuccess","hideSpinner","convertJSONData","tempData","selfData","mappingData","executeLocal","group","groupData","items","selfReferenceUpdate","createRecords","referenceData","shift","loadChildOnDemand","getUid","Math","ceil","random","rowDetails","isChild","gridRows","getContentTable","childRecord","targetEle","getElementsByClassName","getRowObjectFromUID","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","getDataModule","generateQuery","clonequries","fn","showSpinner","currentViewData","inx","haveChild","events.actionComplete","aggregates","gridQuery","aggregateQuery","summaryQuery","q","summaryModule","calculateSummaryValue","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","enableInfiniteScrolling","events.expanded","contentModule","currentInfo","prevInfo","loadNext","currentPage","nextInfo","page","parentRecords","treeGridData","currentData","dataObj","isExport","expresults","exportType","isPrinting","actionArgs","actionData","actionAddArgs","primaryKeyColumnName","dataValue","isLocalData","updateAction","filterQuery","searchQuery","results","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","sortComparer","bind","direction","sortBy","rowDragAndDropModule","dragdIndex","dropdIndex","sortArgs","temp","paging","printMode","actArgs","events.pagingActions","isCollapsedStatePersist","actualResults","dataResult","events.crudAction","events.batchSave","ToolbarItem","ContextMenuItems","PageSettings","AggregateColumn","intl","Internationalization","setFormatter","cultureName","format","skeleton","formatFn","getFormatFunction","getDateFormat","getNumberFormat","getFormatter","setTemplate","helper","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","indentOutdentAction","modifiedRecords","stackedHeader","objectEqualityChecker","old","current","isEqual","excludeKeys","Date","getTime","TreeGrid_1","TreeGridSelection","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","preRender","TreeGridLocale","initProperties","defaultLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","l10n","L10n","locale","sortByColumn","isMultiSort","sortModule","sortColumn","clearSorting","removeSortColumn","search","searchString","autoFitColumns","fieldNames","resizeModule","updateColumnModel","reorderColumns","fromFName","toFName","localeObject","gridLocale","treeGridLocale","load","printModule","treeGridkeyActionHandler","allowKeyboard","parentTarget","summaryElement","expandAll","collapseAll","expandCollapseRequest","parentElement","findnextRowElement","selectRow","row_1","clearSelection","findPreviousRowElement","rIndex","cIndex","summaryRowElement","previousElementSibling","infiniteScrollData","columnModel","isExpandAll","isCollapseAll","keyConfigs","ctrlDownArrow","ctrlUpArrow","ctrlShiftUpArrow","ctrlShiftDownArrow","downArrow","upArrow","offline","RemoteSaveAdaptor","wireEvents","EventHandler","mouseClickHandler","keyboardModule","KeyboardEvents","keyAction","eventName","tabIndex","requiredModules","modules","getGridColumns","member","toolbar","contextMenuItems","allowExcelExport","freezePresent","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","IsRowDDInjected","isIndentEnabled","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","refreshToolbarItems","renderComplete","destroyTemplateFn","toolbarElement","toolbarModule","getToolbar","indentID","outdentID","indentElement","outdentElement","afterGridRender","griddata","bindGridProperties","bindedDataSource","enableRtl","columnQueryMode","getActualProperties","pagerTemplate","infiniteScrollSettings","enableAltRow","enableHover","enableAutoFill","enableAdaptiveUI","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","enableVirtualMaskRow","triggerEvents","IsExpandCollapseClicked","bindGridEvents","rowSelecting","events.rowDeselecting","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","events.rowSelected","events.rowDeselected","resizeStop","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","resizeStart","resizing","columnDrag","columnDragStart","columnDrop","beforePrint","beforeCopy","beforePaste","TreeLogger","printComplete","actionFailure","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","dataBound","updateRowTemplate","updateAltRow","req","totalRows","persistSelection","callBackPromise_1","Deferred","beforeDataBoundArgs","resolve","callBackPromise","events.toolbarClick","toolbarargs","cellSelecting","cellselectingArgs","events.beginEdit","begineditArgs","isExpandRefresh","events.dataStateChange","isContextMenuOpen","contextitems","contextMenuModule","contextMenu","events.cellSave","cellsaveArgs","events.cellSaved","promise","events.cellEdit","events.batchAdd","events.beforeBatchSave","events.beforeBatchAdd","events.batchDelete","events.beforeBatchDelete","events.batchCancel","treeColumnRowTemplate","datacount","defaultQuery","JsonAdaptor","dataManager","isQueryInvokedFromData","callBackPromise_2","events.actionBegin","updateTreeGridModel","events.beginAdd","ag","showChildSummary","refresh","selectedItem_1","selectedRecords","dropIndex","dropPosition","selectedRows","isFrozenGrid","literals.movableContent","literals.frozenContent","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","events.rowdraging","rowDrop","events.rowDropped","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","iconCss","tooltipText","Search","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","enablePersistence","treeColumnTextAlign","textAlign","treeColumnField","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","updateTreeColumnTextAlign","closeEdit","getColumnByField","treeGridElement","hasTreeGridChild","removeListener","dataBind","document","getElementById","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","position","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","visibleRecords","getVisibleRecords","sHeight","scrollHeight","clientHeight","getContent","goToPage","pageNo","pagerModule","updateExternalMessage","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","rowInfo_1","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","updateExpandStateMapping","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollTop","getRowHeight","scrollBy","state","totalRecords","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","this_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","startIndex","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","removeAttribute","events.localPagedExpandCollapse","flatDataRecords","deff","data_1","length_1","scrollHeightBeforeRefresh","rows_1","args_1","collapseRemoteChild","movableRows","freezeRightRows","rows_2","getMovableRows","getFrozenRightRows","gridRowsObject","visibleRowCount","gridRow","rcell","arg","movablerows","rightrows","collapsingTd","collapse","expandElement","cRow","eRows","i_1","updateRowAndCellElements","updateResultModel","returnResult","filterByColumn","filterOperator","filterValue","predicate","matchCase","ignoreAccent","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","getSelectedRows","getMovableCellFromIndex","getFrozenRightRowByIndex","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","cnt","isFrozen","getSelectedRowCellIndexes","baseModule","treeModule","reorderRows","fromIndexes","toIndex","outdent","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","hasDropItem","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropRows","orderToIndex","dropData","totalRecord","parentrow","request","selectedItemIndex","selectedItem","selectedRow","selectedRecord","record_1","eventTrigger","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","removeLastrowBorder","islastRowIndex","isEmptyRow","updateIcon","rowEle","rowPositionHeight","addErrorElem","rowTop","toolHeight","offsetHeight","positionOffSet","getOffset","contentHeight","top","offsetTop","divide","getBoundingClientRect","topRowSegment","middleRowSegment","bottomRowSegment","mouseEvent","touchEvent","posy","pageY","changedTouches","isTopSegment","isMiddleRowSegment","isBottomRowSegment","removeChildBorder","removetopOrBottomBorder","addFirstrowBorder","removeErrorElem","topOrBottomBorder","addRemoveClasses","addLastRowborder","borderElem","targetRow","node","div","gridheaderEle","toolbarHeight","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","parentNode","removeChild","spanContent","paddingLeft","dropItemSpan","dropItemLeft","left","spanLeft","errorelem","errorValue","setStyleAttribute","border","box","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","updateModifiedRecords","i_2","i_3","draggedRecords","TreeVirtualRowModelGenerator","events.dataListener","getDatas","visualData","getDataInfo","getData","generateRows","virtualInfo","info","url","blockIndexes","getBlockIndexes","checkAndResetCache","clear","cache","movableCache","frozenRightCache","groups","getBlockSize","VirtualRowModelGenerator","Filter","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parent_1","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","childRec","isExist","parent_2","parent_3","fLevel","ExcelExport","GridExcel","updateExcelResultModel","exportRowDataBound","finalPageSetup","isCsv","Promise","isLocal","event.beforeExcelExport","customData","manipulateExportProperties","book","dtSrc","queryResult","flatsData","dataSrc","excelRow","excelrowobj","rowObj","filtercolumnlength","rowlength","excelRows","rowlevel","Boolean","expandedStatus","sublevelState","grouping","outlineLevel","isCollapsed","worksheets","pageSetup","isSummaryRowBelow","PdfExport","GridPdf","updatePdfResultModel","event.beforePdfExport","customsData","manipulatePdfProperties","flatDatas","paragraphIndent","Page","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","ret","pageRoot","pagedResults","newResults","t","res","updatePageSize","pageingDetails","updateSize","gridPagerModule","pageSizes","pagerObj","pagerdropdownModule","getLocalizedLabel","pageSize","propname","skip","size","take","dm_1","or","parents_1","floor","Toolbar","tool","refreshToolbar","toolbarClickHandler","indentEle","outdentEle","selectedrow","isCheckBoxSelection","Aggregate","GridAggregate","flatChildRecords","isSort","flatRecords","summaryLength","dataLength","getChildRecordsLength","summaryRowIndex","len_1","createSummaryItem","idx_1","currentIndex","summaryParent","length_2","itemData","summary","displayColumn","keys_1","getSummaryValues","summaryColumn","single","getFormatFromType","tempObj","requiresCount","summaryKey","sumData","toLowerCase","calculateAggregate","disp","value_1","summaryformat","Sort","GridSort","flatSortedData","updateModel","createdSortedRecords","sortParams","iterateSort","childSort","ColumnMenu","GridColumnMenu","getColumnMenu","columnMenuModule","ContextMenu","cmenu","addRow","editRecord","event","BatchEdit","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","isAdd","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","actualCellIndex","frozenCols","columnObject","getColumnByIndex","added","primaryKey_1","currentDataIndex","indexvalue","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","changes","batchIndex","primaryParent","childRecordCount","updateChildCount","updateRowIndex","focusModule","table","matrix","newlyAddedRecords","childs","primarykey","parentRowIndex","getRowElementByUID","totalCount","mRows","deleterecords","deleteUniqueID","positionIndex","updatedRecords","primarykey_1","addRecords","endIndex","rowPosition","indexValue","Edit","prevAriaRowIndex","isAddedRowByMethod","isAddedRowByContextMenu","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","events.keyPressed","lastCellTab","contentready","editActionEvents","events.doubleTap","gridDblClick","customCellSave","savePreviousRowPosition","events.beforeStartEdit","events.beforeBatchCancel","resetIsOnBatch","getRowPosition","doubleClickTarget","addArgs","applyFormValidation","eventArgs","treeObj","keyData","paramsLength","infiniteAddAction","rowObjects","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","getMovableRowsObject","isCache","enableCache","resetRowIndex","updateIndex","newRowIndex","dataIndex","infiniteCurrentViewData","infiniteScrollModule","isOnBatch","updateGridEditMode","keyPress","prom","celleditArgs","toolbarID","cellDetails","treeCell","afterCellSave","form","rowIndex_1","primaryKeys_1","isTabLastRow","update","fromTable","previousValue","editArgs","filterChoiceCount","excelSearchOperator","mRow","aggregateModule","destroyWidgets","formObj","restoreFocus","saveArgs","previousData","data1","treeColIndex","l","data2","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","focussedElement","activeElement","newFreezeRowObject","rightFrozenRows","errors","focus","newlyAddedRecord","seletedRow","beginAddEdit","primaryKeys_2","selector","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","editFormValidate","destroyForm","CommandColumn","Command","DetailRow","detailrow","dataBoundArg","detaildataBound","setIndentVisibility","childRowExpand","rowExpandCollapse","actioncomplete","detailele","elements","detailData","detailRowElement","detailElement","previousSibling","expandClass","classlist","gridClas","gridclass","newNo","detailClass","spann","updtdcolum","focusElement","VirtualTreeContentRenderer","locator","isExpandCollapse","translateY","maxiPage","recordAdded","preTranslate","isRemoteExpand","getModelGenerator","getMovableVirtualRowByIndex","getRowCollection","getFrozenRightVirtualRowByIndex","isMovable","isRowObject","isFrozenRight","startIdx","literals.dataRowIndex","rowCollection","events.virtualActionArgs","virtualOtherAction","events.indexModifier","setTop","nextSetResIndex","lastIndex","root","onDataReady","refreshContentRows","observers","observes","scrollArgs","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","onActionComplete","virtualEditSuccess","resetIseditValue","cancelEdit","toSelectRowOnContextOpen","refreshCell","cellFocus","getColumnOffset","setVirtualHeight","contents","debounceEvent","TreeInterSectionObserver","getPanel","getTranslateY","sTop","cHeight","isOnenter","initialRowTop","gridTop","containerRect","observer","generateCells","generateCell","rowId","cellType","colSpan","oIndex","foreignKeyData","isDataCell","isTemplate","rowID","Data","isForeignKey","isForeignColumn","Cell","withInRange","restoreEditState","restoreNewRow","isWheel","isIE","xAxis","axis","vgenerator","getColumnIndexes","columnIndexes","cOffsets","maxLeft","virtualEle","adjustTable","header","sentinel","outBuffer","upScroll","offset","downScroll","vHeight","lastInx","remains","rowPt","firsttdinx","isLastBlock","viewInfo","previousInfo","setColumnIndexesInView","loadSelf","appendContent","newChild","sentinelInfo","cBlock","cOffset","setWrapperWidth","name","getTable","VirtualContentRenderer","isWheeling","newPos","lastPos","timer","callback","onEnterCallback","instance","virtualScrollHandlers","movableContainer","debounced50","debounce","prevTop","prevLeft","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","VirtualTreeFreezeRenderer","freezeRowGenerator","FreezeRowModelGenerator","virtualRenderer","serviceLoc","getRenderer","virtualHdrRenderer","FreezeContentRender","setPanel","movableCont","getMovableContent","minHeight","literals.content","overflowX","renderFrozenWrapper","renderFrozenPlaceHolder","renderMovableWrapper","renderMovablePlaceHolder","tbl","movableTable","movableWrapper","movablePlaceholder","wrapper","getFrozenContent","setDebounce","movableEle","VirtualFreezeRenderer","ColumnVirtualTreeFreezeRenderer","ColumnFreezeContentRenderer","frozenRightCont","getFrozenRightContent","frzCont","getFrozenMode","ColumnVirtualFreezeRenderer","VirtualTreeFreezeHdrRenderer","rfshMovable","VirtualFreezeHdrRenderer","Freeze","FreezeColumn","dblClickHandler","instantiateRenderer","FreezeRender","ColumnFreezeHeaderRenderer","frozenRightRows","frozenrows","rData","queryselector","freezeModule","ColumnChooser","GridColumnChooser","X","Y","InfiniteScroll","GridInfiniteScroll","infinitePageAction","infiniteRemoteExpand","infiniteDeleteHandler","infiniteEditHandler","createRows","collapseExpandInfinitechilds","rowRenderer","RowRenderer","childRowObjects","childRowElements","infiniteParents","actions","initialBlocks","maxBlocks","firstIndex","rowElms","keyField","removeRows","mRowElms","tbody","currentRows","getMovableVirtualContent","getFrozenVirtualContent","isFrozenRows","getMovableVirtualHeader","getFrozenVirtualHeader","newRow"],"mappings":"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EAASzjB,UAAW,gBAAY,GACnCyE,IACIc,gBACDke,EAASzjB,UAAW,eAAW,GAClCyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,WAAS,IACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,0BAAsB,GAC7CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,2BAAuB,GAC9CyE,IACIc,gBACDke,EAASzjB,UAAW,kBAAc,GACrCyE,IACIc,cACDke,EAASzjB,UAAW,aAAS,GAChCyE,IACIc,cACDke,EAASzjB,UAAW,kBAAc,GACrCyE,IACIc,WAAS,aACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,mBAAe,GACtCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACI4+B,aAAY19B,IACb8d,EAASzjB,UAAW,wBAAoB,GAC3CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,0BAAsB,GAC7CyE,IACI4+B,aAAYzhB,KACb6B,EAASzjB,UAAW,oBAAgB,GACvCyE,IACI4+B,aAAYC,oBACb7f,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,cACDke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACI4+B,aAAY9f,KACbE,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIiB,gBAAe0d,KAChBK,EAASzjB,UAAW,kBAAc,GACrCyE,IACI4+B,aAAYhgB,KACbI,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,cACDke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACI4+B,aAAY59B,IACbge,EAASzjB,UAAW,sBAAkB,GACzCyE,IACI4+B,aAAYhvB,KACboP,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,cACDke,EAASzjB,UAAW,eAAW,GAClCyE,IACIc,cACDke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,WAAS,YACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,cACDke,EAASzjB,UAAW,wBAAoB,GAC3CyE,IACIc,cACDke,EAASzjB,UAAW,uBAAmB,GAC1CyE,IACIc,cACDke,EAASzjB,UAAW,mBAAe,GACtCyE,IACIc,WAAS,WACVke,EAASzjB,UAAW,yBAAqB,GAC5CyE,IACIc,WAAS,OACVke,EAASzjB,UAAW,iBAAa,GACpCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,oBAAgB,GACvCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,qBAAiB,GACxCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,mBAAe,GACtCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,sBAAkB,GACzCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,wBAAoB,GAC3CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,2BAAuB,GAC9CyE,IACIc,WAAS,SACVke,EAASzjB,UAAW,cAAU,GACjCyE,IACIc,WAAS,SACVke,EAASzjB,UAAW,aAAS,GAChCyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,4BAAwB,GAC/CyE,IACIc,YAAS,IACVke,EAASzjB,UAAW,kCAA8B,GACrDyE,IACIc,YAAS,IACVke,E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"}
|