@syncfusion/ej2-treegrid 19.4.41 → 19.4.50

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-treegrid.umd.min.js","sources":["../src/treegrid/utils.js","../src/treegrid/actions/crud-actions.js","../src/treegrid/models/column.js","../src/treegrid/models/filter-settings.js","../src/treegrid/models/textwrap-settings.js","../src/treegrid/actions/logger.js","../src/treegrid/base/constant.js","../src/treegrid/actions/clipboard.js","../src/treegrid/actions/selection.js","../src/treegrid/actions/print.js","../src/treegrid/models/search-settings.js","../src/treegrid/models/selection-settings.js","../src/treegrid/renderer/render.js","../src/treegrid/base/data.js","../src/treegrid/enum.js","../src/treegrid/models/page-settings.js","../src/treegrid/models/summary.js","../src/treegrid/models/edit-settings.js","../src/treegrid/models/sort-settings.js","../src/treegrid/models/infinite-scroll-settings.js","../src/treegrid/base/treegrid.js","../src/treegrid/actions/reorder.js","../src/treegrid/actions/resize.js","../src/treegrid/actions/rowdragdrop.js","../src/treegrid/models/rowdrop-settings.js","../src/treegrid/renderer/virtual-row-model-generator.js","../src/treegrid/actions/filter.js","../src/treegrid/actions/excel-export.js","../src/treegrid/actions/pdf-export.js","../src/treegrid/actions/page.js","../src/treegrid/actions/toolbar.js","../src/treegrid/actions/summary.js","../src/treegrid/actions/sort.js","../src/treegrid/actions/column-menu.js","../src/treegrid/actions/context-menu.js","../src/treegrid/actions/batch-edit.js","../src/treegrid/actions/edit.js","../src/treegrid/actions/command-column.js","../src/treegrid/actions/detail-row.js","../src/treegrid/renderer/virtual-tree-content-render.js","../src/treegrid/actions/virtual-scroll.js","../src/treegrid/actions/freeze-column.js","../src/treegrid/actions/column-chooser.js","../src/treegrid/actions/infinite-scroll.js"],"sourcesContent":["import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[i].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[i]);\n if (hasChild) {\n datas.push(records[i]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords;\n for (var i = 0, len = Object.keys(childRecords).length; i < len; i++) {\n datas.push(childRecords[i]);\n if (childRecords[i].hasChildRecords || (!isNullOrUndefined(childRecords[i].childRecords) &&\n childRecords[i].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[i]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[i]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[j]] = array[i][keys[j]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[idFilter][value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[id][value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[k][key]) === 'object') {\n modifiedData[k] = modifiedData[k][key];\n }\n var keys = modifiedData[k].taskData ? Object.keys(modifiedData[k].taskData) :\n Object.keys(modifiedData[k]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[i][key] === modifiedData[k][key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[i];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[control.idMapping] === currentData_1[control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[p][control.idMapping] === currentData_1[control.idMapping]) {\n parentData['childRecords'].splice(p, 1);\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[i], keys[j]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[changedRecords].length === 0))\n || keys[j] === columnName)) {\n var editedData = getParentData(control, modifiedData[k].uniqueID);\n treeData[i][keys[j]] = modifiedData[k][keys[j]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[j]] = editedData[keys[j]] = treeData[i][keys[j]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[control.parentIdMapping] = treeData[i][control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[i], control.childMapping)) {\n treeData[i][control.childMapping] = [];\n }\n treeData[i][control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[i], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[i][control.childMapping])) {\n if (removeChildRecords(treeData[i][control.childMapping], modifiedData[k], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[i], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[addRowIndex];\n if (!isNullOrUndefined(currentdata) && currentdata[primaryKeys] === details.value[primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[j][key] === modifiedData[key] ||\n (isSelfReference && childRecords[j][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[j], keys[i]) && (control.editSettings.mode !== 'Cell' || keys[i] === columnName)) {\n editedData[keys[i]] = editedData.taskData[keys[i]] = childRecords[j][keys[i]] = modifiedData[keys[i]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[control.parentIdMapping] = childRecords[j][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[j], control.childMapping)) {\n childRecords[j][control.childMapping] = [];\n }\n childRecords[j][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[j][control.childMapping])) {\n if (removeChildRecords(childRecords[j][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[key] === record[key]) {\n index_1 = i;\n return;\n } });\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[index_1];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[key] !== child[key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[control.childMapping].indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[i][primaryKeys] === record[primaryKeys]) {\n data[i] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[index_2] ? row.cells[index_2]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n }\n }\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[i] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'][refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[i]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[i] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[i] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[i] === 'primary_column_missing' || type[i] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[i] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[i] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[i] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[i] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[i] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[i]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent) {\n var _this = _super.call(this, parent.grid) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[i]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[i]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[i][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[i], rows, withHeader, i);\n }\n this[getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[i], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.treeGridParent.getVisibleColumns()[i].headerText;\n }\n this[getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this[copyContent] = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this[isSelect] = true;\n this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[selectedIndex][parentItem])) {\n var treeLevel = currentRecords[selectedIndex][parentItem][level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[selectedIndex][parentItem]) &&\n currentRecords[j][uniqueID] === currentRecords[selectedIndex][parentItem][uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[selectedIndex].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[j][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[selectedIndex][hasChildRecords]) {\n var childData = currentRecords[selectedIndex][childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[i][uniqueID]) && currentRecords[j][uniqueID] === childData[i][uniqueID]) {\n if ((!isNullOrUndefined(rows[j])) && !rows[j].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[j].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[j][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[copyContent]);\n this[copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var columns = (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = this.parent.columns[col].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[j];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[i]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[j])) {\n flatRecord[keys[j]] = record[keys[j]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[count].isSummaryRow) {\n if (childRecords[count].hasChildRecords) {\n this.traverSelection(childRecords[count], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[count], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[i].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && indeter === 0) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length) {\n this.filteredList = [];\n }\n }\n var data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList :\n this.parent.flatData;\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[i].checkboxState === 'check') {\n continue;\n }\n data[i].checkboxState = 'check';\n this.updateSelectedItems(data[i], data[i].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[i]);\n if (index > -1) {\n data[i].checkboxState = 'uncheck';\n this.updateSelectedItems(data[i], data[i].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[i]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.getCurrentViewRecords().indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var checkbox;\n if (recordIndex > -1) {\n var tr = this.parent.getRows()[recordIndex];\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[recordIndex];\n }\n checkbox = tr.querySelectorAll('.e-frame')[0] ? tr.querySelectorAll('.e-frame')[0]\n : movableTr.querySelectorAll('.e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && this.parent.enableVirtualization && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[i], childData[i].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[i]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[i], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[i].parentItem)) {\n this.updateParentSelection(updatedData[i].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.getCurrentViewRecords() : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[i].hasChildRecords) {\n _this.updateParentSelection(child[i]);\n }\n else if (!(child[i].hasChildRecords) && !isNullOrUndefined(child[i])) {\n _this.updateSelectedItems(child[i], child[i].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed) {\n args.row.style.display = 'none';\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (<ITreeData>args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n iconRequired = !(data.childRecords.length === 0);\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '7px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('aria-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n args.column.template = treeColumn.template;\n args.column[templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[templateFn](args.data, this.parent, 'template', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[portals])) {\n this.parent.grid[portals] = this.parent[portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[i]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = <DataManager>this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n for (var i = 0; i < Object.keys(data).length; i++) {\n var tempData = data[i];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[i];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[index][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var records = args.result;\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n for (var rec = 0; rec < records.length; rec++) {\n if (isCountRequired(this.parent) && records[rec].hasChildRecords && this.parent.initialRender) {\n records[rec].expanded = false;\n }\n if (isNullOrUndefined(records[rec].index)) {\n records[rec].taskData = extend({}, records[rec]);\n records[rec].uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[rec].uniqueID, records[rec], this.parent);\n records[rec].level = 0;\n records[rec].index = Math.ceil(Math.random() * 1000);\n if ((records[rec][this.parent.hasChildMapping] ||\n this.parentItems.indexOf(records[rec][this.parent.idMapping]) !== -1)) {\n records[rec].hasChildRecords = true;\n }\n records[rec].checkboxState = 'uncheck';\n }\n }\n }\n else {\n if (!isNullOrUndefined(records)) {\n this.convertToFlatData(records);\n }\n }\n }\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[i].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[i].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ? this.parent.grid.getCurrentViewRecords()[rowDetails.rows[i].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[i].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var datas = _this.parent.grid.currentViewData.slice();\n var inx = datas.indexOf(rowDetails.record);\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n rowDetails.record.childRecords = result;\n for (var r = 0; r < result.length; r++) {\n result[r].taskData = extend({}, result[r]);\n result[r].level = rowDetails.record.level + 1;\n result[r].index = Math.ceil(Math.random() * 1000);\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[r].parentItem = parentData;\n result[r].parentUniqueID = rowDetails.record.uniqueID;\n result[r].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[r].checkboxState = 'uncheck';\n setValue('uniqueIDCollection.' + result[r].uniqueID, result[r], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[r][_this.parent.hasChildMapping] || _this.parentItems.indexOf(result[r][_this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[r])) {\n result[r].hasChildRecords = true;\n result[r].expanded = false;\n }\n datas.splice(inx + r + 1, 0, result[r]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[result_1], true);\n }\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n for (var i = 0, len = Object.keys(data).length; i < len; i++) {\n var currentData = extend({}, data[i]);\n currentData.taskData = data[i];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping]) ||\n (currentData[this.parent.hasChildMapping] && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n if (isNullOrUndefined(currentData[this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[primaryKeyColumnName])) {\n actionAddArgs.data[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n dataValue.taskData[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[getColumnByField](this.parent.grid.\n sortSettings.columns[srt].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[srt].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[srt].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[isPdfExport] && (isNullOrUndefined(args[isCollapsedStatePersist])\n || args[isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[i], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[i]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, addClass, createElement, EventHandler, isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { CellRenderer } from '@syncfusion/ej2-grids';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\n/**\n * Represents the TreeGrid component.\n * ```html\n * <div id='treegrid'></div>\n * <script>\n * var treegridObj = new TreeGrid({ allowPaging: true });\n * treegridObj.appendTo('#treegrid');\n * </script>\n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== current[keys[i]] && excludeKeys.indexOf(keys[i]) === -1) {\n var isDate = old[keys[i]] instanceof Date && current[keys[i]] instanceof Date;\n if (!isDate || (old[keys[i]].getTime() !== current[keys[i]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n TreeGrid.prototype.sortByColumn = function (columnName, direction, isMultiSort) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\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 this.sortModule.removeSortColumn(field);\n };\n /**\n * Searches TreeGrid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n row = column.closest('tr');\n if (row !== null && row !== undefined) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n row = column.closest('tr');\n if (row !== null && row !== undefined) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var rowIndex = summaryElement.rowIndex;\n this.selectRow(rowIndex);\n var cellIndex = e.target.cellIndex;\n var row_1 = summaryElement.children[cellIndex];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var rIndex = summaryElement.rowIndex;\n this.selectRow(rIndex);\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[cIndex];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount()) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[i].member === 'virtualscroll') {\n modules[i].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n this.grid.appendTo(gridContainer);\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[templateInstance] = this[templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[isJsComponent] = true;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))) {\n args.cancel = true;\n return;\n }\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[i].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[updateRowSelection](_this.getRows()[i], _this.getCurrentViewRecords()[i].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.rowDeselecting = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[rowIndex]].classList.contains('e-summaryrow')) {\n args[rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[j]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[j]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = getObject('dataSource.requests', _this).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[i])) {\n if (totalRows[i].nextElementSibling) {\n _this.lastRowBorder(totalRows[i], true);\n }\n break;\n }\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n this.treeColumnRowTemplate();\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[dataSource].json = extendArray(this.dataSource[dataSource].json);\n this.grid.dataSource[ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[ready])) {\n this.grid.dataSource[ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[dataSource].offline = true;\n dm[isDataAvailable] = true;\n dm[dataSource].json = e.result;\n dm[adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 || _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise.resolve(actionArgs);\n });\n return callBackPromise;\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 _this.trigger(events.actionComplete, args);\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (<DataManager>this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[i]) === -1) {\n this.columns.push(keys[i]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[guid] = this.editSettings[guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[i]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n default:\n items.push(this.contextMenuItems[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[i]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n index = index === 0 ? -1 : index;\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[i].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[i] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[i];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[prop] = column[i][prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[i][prop])) {\n gridColumn[prop] = this.getGridColumns(column[i][prop], false, index);\n treeGridColumn[prop] = column[i][prop];\n }\n else {\n gridColumn[prop] = treeGridColumn[prop] = column[i][prop];\n }\n }\n }\n if (!treeGridColumn[stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'columns':\n this.grid.columns = this.getGridColumns(this.columns);\n break;\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[prop].mode &&\n (newProp[prop].mode === 'Cell' || newProp[prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n this.ignoreInArrays(ignoreOnColumn, columns[i].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[index];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[rowIndex];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var stackedHeader = false;\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[prop] = gridColumns[i][prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[i].field && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[i].template = temp;\n }\n }\n }\n var merge = 'deepMerge';\n this[merge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n stackedHeader = true;\n }\n if (!stackedHeader) {\n this.setProperties({ columns: this.columnModel }, true);\n }\n this[merge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.grid.getRowsObject();\n var indent = _this.grid.getIndentCount();\n var cellIndex = _this.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this.grid, _this.grid.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n dRows.push(rows[i]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n return this.grid.currentViewData;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ? this.flatData :\n new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[i]);\n if (!currentViewRecords[i].expanded) {\n i += findChildrenRecords(currentViewRecords[i]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if (this.getBatchChanges()[this.changedRecords].length ||\n this.getBatchChanges()[this.deletedRecords].length || this.getBatchChanges()[this.addedRecords].length) {\n var dialogObj = this.grid.editModule[obj];\n this.grid.editModule[showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo = this.grid.getRowInfo(target);\n var record = rowInfo.rowData;\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo.row, record);\n }\n else {\n this.expandRow(rowInfo.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n _this.expandCollapse('expand', row, record);\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n var children = 'Children';\n if (!(isRemoteData(_this) && !isOffline(_this)) && (!isCountRequired(_this) || !isNullOrUndefined(record[children]))) {\n var collapseArgs = { data: record, row: row };\n _this.setHeightForFrozenContent();\n _this.trigger(events.expanded, collapseArgs);\n }\n }\n });\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[i]);\n }\n };\n TreeGrid.prototype.setHeightForFrozenContent = function () {\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.grid.getFrozenColumns() > 0 || freeze) {\n this.grid.contentModule.refreshScrollOffset();\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(_this)) {\n _this.setHeightForFrozenContent();\n _this.trigger(events.collapsed, collapseArgs);\n if (_this.enableInfiniteScrolling) {\n var scrollHeight = _this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = _this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < _this.grid.getRowHeight() + +_this.height) {\n _this.grid.getContent().firstElementChild.scrollBy(0, _this.grid.getRowHeight());\n }\n }\n }\n }\n });\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[i].parentItem)) {\n var puniqueID_1 = record[i].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[i], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[i], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n if (action === 'collapse') {\n this.collapseRow(rows[0]);\n }\n else {\n this.expandRow(rows[0]);\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[i]);\n }\n else {\n this.expandRow(rows[i]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if (!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.getCurrentViewRecords().indexOf(record);\n row = gridRows[rowIndex];\n }\n else {\n rowIndex = +row.getAttribute('aria-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[i])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[i], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[i].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[i]) {\n childData[i].level = record.level + 1;\n childData[i].index = Math.ceil(Math.random() * 1000);\n childData[i].parentItem = extend({}, record);\n childData[i].taskData = extend({}, childData[i]);\n delete childData[i].parentItem.childRecords;\n delete childData[i].taskData.parentItem;\n childData[i].parentUniqueID = record.uniqueID;\n childData[i].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[i].uniqueID, childData[i], _this);\n if (!isNullOrUndefined(childData[i][_this.childMapping]) ||\n (childData[i][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[i].hasChildRecords = true;\n }\n currentData.splice(index + 1 + i, record[_this.childMapping] && record[_this.childMapping][i] ? 1 : 0, childData[i]);\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[index][_this.childMapping] = childData;\n currentData[index].childRecords = childData;\n currentData[index].expanded = true;\n setValue('uniqueIDCollection.' + currentData[index].uniqueID, currentData[index], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[j]);\n }\n }\n _this.isExpandRefresh = true;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.setHeightForFrozenContent();\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[i][primaryKeyField]);\n rows.push(this.getRows()[rowIndex]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[i])) {\n rows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[i].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[i] });\n if (!isNullOrUndefined(childRecords[i].childRecords) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[i].expanded) || childRecords[i].expanded)) {\n this.expandCollapse(action, rows[i], childRecords[i], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[i], childRecords[i], true);\n }\n }\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[i];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[i].cells[this.treeColumnIndex];\n var row = rows[i];\n var rowData = this.grid.getRowsObject()[i].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = 'none';\n row = rows[i];\n var collapsingTd = rows[i].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[i].style.display = 'none';\n rightrows[i].style.display = 'none';\n if (!rows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[i];\n }\n else if (rightrows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[i];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[i].rowIndex] :\n this.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[i_1].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[i_1]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, true);\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[j].columns) {\n cnt = this.getFrozenCount(cols[j].columns, cnt);\n }\n else {\n if (cols[j].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[f]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n data[i] = this.parent.getCurrentViewRecords()[fromIndexes[i]];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = this.parent.treeColumnIndex + 1;\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][parentUniqueID]);\n var parentrow = this.parent.getRows()[toIndex];\n totalRecord.push(parentData);\n rows.push(parentrow);\n for (var i = 0; i < totalRecord.length; i++) {\n this.parent.renderModule.cellRender({\n data: totalRecord[i], cell: rows[i].cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n var _loop_1 = function (i) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = currentData.filter(function (data) {\n return data.uniqueID === currentData[i].parentUniqueID;\n })[0];\n currentData[i].parentItem.index = updatedParent.index;\n }\n };\n for (var i = 0; i < currentData.length; i++) {\n _loop_1(i);\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[i];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[i];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[j]) === -1) {\n dragRecords_1.splice(j, 0, childData[j]);\n childData[j].taskData = extend({}, childData[j]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping) && draggedRecord_1[tObj.parentIdMapping] != null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[i].uniqueID, dragRecords[i], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[i];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n for (var i = 0; i < Object.keys(tempDataSource).length; i++) {\n if (tempDataSource[i][this.parent.childMapping] === droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][i] = childRecords[i].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[i].getAttribute('data-uid')\n || !parentsUntil(args.target, 'e-gridcontent')) {\n this.dropPosition = 'Invalid';\n this.addErrorElem();\n }\n }\n // To get the corresponding drop position related to mouse position\n var tObj = this.parent;\n var rowTop = 0;\n var roundOff = 0;\n var toolHeight = tObj.toolbar && tObj.toolbar.length ?\n document.getElementById(tObj.element.id + '_gridcontrol_toolbarItems').offsetHeight : 0;\n // tObj.lastRow = tObj.getRowByIndex(tObj.getCurrentViewRecords().length - 1);\n var positionOffSet = this.getOffset(tObj.element);\n // let contentHeight1: number = (tObj.element.offsetHeight - (tObj.getContent() as HTMLElement).offsetHeight) + positionOffSet.top;\n var contentHeight = tObj.getHeaderContent().offsetHeight + positionOffSet.top + toolHeight;\n var scrollTop = tObj.getContent().firstElementChild.scrollTop;\n if (!isNullOrUndefined(rowEle)) {\n rowPositionHeight = rowEle.offsetTop - scrollTop;\n }\n // let scrollTop = (tObj.grid.scrollModule as any).content.scrollTop;\n rowTop = rowPositionHeight + contentHeight + roundOff;\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = errorVal.innerHTML;\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = content;\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n if (errorelem) {\n errorelem.remove();\n }\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[i].classList.add(className);\n }\n else {\n cells[i].classList.remove(className);\n }\n }\n };\n RowDD.prototype.getOffset = function (element) {\n var box = element.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n };\n RowDD.prototype.Rowdraging = function (args) {\n var tObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n cloneElement.style.cursor = '';\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n var rowIdx = rowEle ? rowEle.rowIndex : -1;\n var dragRecords = [];\n var droppedRecord = tObj.getCurrentViewRecords()[rowIdx];\n this.removeErrorElem();\n this.canDrop = true;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n if (rowIdx !== -1) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.canDrop = false;\n this.addErrorElem();\n }\n if (!tObj.rowDropSettings.targetID && this.canDrop) {\n tObj.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n if (tObj.rowDropSettings.targetID) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID) {\n var srcControl = dropElement.ej2_instances[0];\n srcControl.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n }\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID)) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (!dropElement) {\n cloneElement.style.cursor = 'default';\n }\n }\n };\n RowDD.prototype.rowDropped = function (args) {\n var tObj = this.parent;\n var parentItem = 'parentItem';\n if (!tObj.rowDropSettings.targetID) {\n if (parentsUntil(args.target, 'e-content')) {\n if (this.parent.element.querySelector('.e-errorelem')) {\n this.dropPosition = 'Invalid';\n }\n setValue('dropPosition', this.dropPosition, args);\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel) {\n if (!isCountRequired(this.parent)) {\n this.dropRows(args);\n }\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n tObj.grid.refresh();\n if (!isNullOrUndefined(tObj.getHeaderContent().querySelector('.e-firstrow-border'))) {\n tObj.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n }\n }\n }\n else {\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID) || parentsUntil(args.target, 'e-treegrid') &&\n parentsUntil(args.target, 'e-treegrid').id === tObj.rowDropSettings.targetID || args.target && document.getElementById(tObj.rowDropSettings.targetID)) {\n setValue('dropPosition', this.dropPosition, args);\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel && tObj.rowDropSettings.targetID) {\n this.dragDropGrid(args);\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n }\n }\n }\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-firstrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n else if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-lastrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n if (this.parent.enableImmutableMode && !this.parent.allowPaging && !isNullOrUndefined(args.data[0][parentItem])) {\n var index = this.parent.treeColumnIndex;\n index = index + 1;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(args.data[0][primaryKeyField]);\n var row = this.parent.getRows()[rowIndex];\n var data = args.data[0];\n if (this.dropPosition === 'middleSegment') {\n var record = [];\n var rows = [];\n record.push(data);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n data = getParentData(this.parent, args.data[0][parentUniqueID]);\n rowIndex = this.parent.grid.getRowIndexByPrimaryKey(data[primaryKeyField]);\n var parentrow = this.parent.getRows()[rowIndex];\n record.push(data);\n rows.push(parentrow);\n for (var i = 0; i < record.length; i++) {\n this.parent.renderModule.cellRender({\n data: record[i], cell: rows[i].cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n var targetEle = parentrow.getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n else {\n this.parent.renderModule.cellRender({\n data: data, cell: row.cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n };\n RowDD.prototype.dragDropGrid = function (args) {\n var tObj = this.parent;\n var targetRow = closest(args.target, 'tr');\n var targetIndex = isNaN(this.getTargetIdx(targetRow)) ? 0 : this.getTargetIdx(targetRow);\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n var srcControl;\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID && !isRemoteData(this.parent)\n && !isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n var records = tObj.getSelectedRecords();\n var indexes = [];\n for (var i = 0; i < records.length; i++) {\n indexes[i] = records[i].index;\n }\n var data = srcControl.dataSource;\n if (this.parent.idMapping != null && (isNullOrUndefined(this.dropPosition) || this.dropPosition === 'bottomSegment' || this.dropPosition === 'Invalid') && !(data.length)) {\n var actualData = [];\n for (var i = 0; i < records.length; i++) {\n if (records[i].hasChildRecords) {\n actualData.push(records[i]);\n var child = findChildrenRecords(records[i]);\n for (var i_1 = 0; i_1 < child.length; i_1++) {\n actualData.push(child[i_1]); // push child records to drop the parent record along with its child records\n }\n }\n }\n if (actualData.length) {\n records = actualData;\n }\n }\n tObj.notify(events.rowsRemove, { indexes: indexes, records: records });\n srcControl.notify(events.rowsAdd, { toIndex: targetIndex, records: records });\n var srcControlFlatData = srcControl.rowDragAndDropModule.treeGridData;\n if (!isNullOrUndefined(srcControlFlatData)) {\n for (var i = 0; i < srcControlFlatData.length; i++) {\n srcControlFlatData[i].index = i;\n if (!isNullOrUndefined(srcControlFlatData[i].parentItem)) {\n var actualIndex = getValue('uniqueIDCollection.' + srcControlFlatData[i].parentUniqueID + '.index', srcControl);\n srcControlFlatData[i].parentItem.index = actualIndex;\n }\n }\n }\n tObj.grid.refresh();\n srcControl.grid.refresh();\n if (srcControl.grid.dataSource.length > 1) {\n srcControl.grid.refresh();\n if (!isNullOrUndefined(srcControl.getHeaderContent().querySelector('.e-firstrow-border'))) {\n srcControl.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n if (!isNullOrUndefined(srcControl.getContent().querySelector('.e-lastrow-border'))) {\n srcControl.getContent().querySelector('.e-lastrow-border').remove();\n }\n }\n }\n if (isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n tObj.grid.refresh();\n srcControl.grid.refresh();\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute('aria-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record) {\n var parentItem = record.parentItem;\n if (this.dropPosition === 'bottomSegment') {\n var selectedRecord = this.parent.getSelectedRecords()[0];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getSelectedRecords()[0].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var rowIndex = tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_2 = function (i) {\n draggedRecord_2 = dragRecords[i];\n this_1.draggedRecord = draggedRecord_2;\n if (this_1.dropPosition !== 'Invalid') {\n if (!tObj.rowDropSettings.targetID || isByMethod) {\n this_1.deleteDragRow();\n }\n if (this_1.draggedRecord === this_1.droppedRecord) {\n var correctIndex = this_1.getTargetIdx(args.target.offsetParent.parentElement);\n if (isNaN(correctIndex)) {\n correctIndex = this_1.getTargetIdx(args.target.parentElement);\n }\n args.dropIndex = correctIndex;\n droppedRecord = this_1.droppedRecord = this_1.parent.getCurrentViewRecords()[args.dropIndex];\n }\n if (droppedRecord.parentItem || this_1.dropPosition === 'middleSegment') {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.draggedRecord);\n if (newParentIndex !== -1) {\n parentRecords.splice(newParentIndex, 1);\n }\n }\n var recordIndex1 = this_1.treeGridData.indexOf(droppedRecord);\n this_1.dropAtTop(recordIndex1);\n if (this_1.dropPosition === 'bottomSegment') {\n if (!droppedRecord.hasChildRecords) {\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + 1, 0, this_1.draggedRecord);\n }\n else {\n count = this_1.getChildCount(droppedRecord, 0);\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord);\n }\n if (isNullOrUndefined(droppedRecord.parentItem)) {\n delete draggedRecord_2.parentItem;\n draggedRecord_2.level = 0;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = null;\n }\n }\n if (droppedRecord.parentItem) {\n var rec = this_1.getChildrecordsByParentID(droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(droppedRecord) + 1;\n childRecords.splice(droppedRecordIndex, 0, draggedRecord_2);\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.parentUniqueID = droppedRecord.parentUniqueID;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_2(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[recordIndex1].parentItem;\n this.draggedRecord.parentUniqueID = this.treeGridData[recordIndex1].parentUniqueID;\n this.draggedRecord.level = this.treeGridData[recordIndex1].level;\n this.treeGridData.splice(recordIndex1, 0, this.draggedRecord);\n if (this.draggedRecord.hasChildRecords) {\n var level = 1;\n this.updateChildRecord(this.draggedRecord, recordIndex1);\n this.updateChildRecordLevel(this.draggedRecord, level);\n }\n if (this.droppedRecord.parentItem) {\n var rec = this.getChildrecordsByParentID(this.droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(this.droppedRecord);\n childRecords.splice(droppedRecordIndex, 0, this.draggedRecord);\n }\n }\n };\n RowDD.prototype.recordLevel = function () {\n var tObj = this.parent;\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var childItem = tObj.childMapping;\n if (!droppedRecord.hasChildRecords) {\n droppedRecord.hasChildRecords = true;\n droppedRecord.hasFilteredChildRecords = true;\n if (isNullOrUndefined(droppedRecord.childRecords) || droppedRecord.childRecords.length === 0) {\n droppedRecord.childRecords = [];\n if (!tObj.parentIdMapping && isNullOrUndefined(droppedRecord.taskData[childItem])) {\n droppedRecord.taskData[childItem] = [];\n }\n }\n }\n if (this.dropPosition === 'middleSegment') {\n var parentItem = extend({}, droppedRecord);\n delete parentItem.childRecords;\n draggedRecord.parentItem = parentItem;\n draggedRecord.parentUniqueID = droppedRecord.uniqueID;\n droppedRecord.childRecords.splice(droppedRecord.childRecords.length, 0, draggedRecord);\n var isSelfReference = 'isSelfReference';\n if (tObj[isSelfReference]) {\n droppedRecord[tObj.childMapping] = [];\n droppedRecord[tObj.childMapping].splice(droppedRecord[tObj.childMapping].length, 0, draggedRecord);\n }\n if (!isNullOrUndefined(draggedRecord) && !tObj.parentIdMapping && !isNullOrUndefined(droppedRecord.taskData[childItem])) {\n droppedRecord.taskData[tObj.childMapping].splice(droppedRecord.childRecords.length, 0, draggedRecord.taskData);\n }\n if (!draggedRecord.hasChildRecords) {\n draggedRecord.level = droppedRecord.level + 1;\n }\n else {\n var level = 1;\n draggedRecord.level = droppedRecord.level + 1;\n this.updateChildRecordLevel(draggedRecord, level);\n }\n droppedRecord.expanded = true;\n }\n };\n RowDD.prototype.deleteDragRow = function () {\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n this.treeGridData = this.parent.grid.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n var deletedRow = getParentData(this.parent, this.draggedRecord.uniqueID);\n if (!isNullOrUndefined(deletedRow.childRecords) && deletedRow.childRecords.length) {\n deletedRow.hasChildRecords = true;\n }\n this.removeRecords(deletedRow);\n };\n RowDD.prototype.updateChildRecord = function (record, count) {\n var currentRecord;\n var tObj = this.parent;\n var length = 0;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, tObj);\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, this.parent);\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[j][primaryKeyField] === deletedRow[primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[i_2][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[i_3][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the row drop settings of the TreeGrid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext && 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 && notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n for (var r = 0; r < rows.length; r++) {\n rows[r].index = (this.visualData).indexOf(rows[r].data);\n }\n return rows;\n }\n };\n TreeVirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var clear = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'reorder',\n 'save', 'delete'].some(function (value) { return action === value; });\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n var model = 'model';\n var currentPage = this[model].currentPage;\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n else if (action === 'virtualscroll' && this.cache[currentPage] &&\n this.cache[currentPage].length > (this.parent.contentModule).getBlockSize()) {\n delete this.cache[currentPage];\n }\n }\n else {\n if (clear || action === 'virtualscroll') {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[f];\n this.addParentRecord(rec);\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'None') &&\n (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== ''))) {\n this.isHierarchyFilter = true;\n }\n var ischild = getObject('childRecords', rec);\n if (!isNullOrUndefined(ischild) && ischild.length) {\n setValue('hasFilteredChildRecords', this.checkChildExsist(rec), rec);\n }\n var parent_1 = getObject('parentItem', rec);\n if (!isNullOrUndefined(parent_1)) {\n var parRecord = getParentData(this.parent, rec.parentItem.uniqueID, true);\n //let parRecord: Object = this.flatFilteredData.filter((e: ITreeData) => {\n // return e.uniqueID === rec.parentItem.uniqueID; })[0];\n setValue('hasFilteredChildRecords', true, parRecord);\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n }\n }\n if (this.flatFilteredData.length > 0 && this.isHierarchyFilter) {\n this.updateFilterLevel();\n }\n this.parent.notify('updateAction', { result: this.filteredResult });\n };\n Filter.prototype.updateParentFilteredRecord = function (record) {\n var parRecord = getParentData(this.parent, record.parentItem.uniqueID, true);\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (parRecord && Object.prototype.hasOwnProperty.call(uniqueIDValue, parRecord.uniqueID)) {\n setValue('hasFilteredChildRecords', true, parRecord);\n }\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n };\n Filter.prototype.addParentRecord = function (record) {\n var parent = getParentData(this.parent, record.parentUniqueID);\n //let parent: Object = this.parent.flatData.filter((e: ITreeData) => {return e.uniqueID === record.parentUniqueID; })[0];\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode === 'None' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (isNullOrUndefined(parent)) {\n if (this.flatFilteredData.indexOf(record) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n record.hasFilteredChildRecords = true;\n }\n return;\n }\n }\n else {\n this.addParentRecord(parent);\n if (this.flatFilteredData.indexOf(parent) !== -1 || this.filteredResult.indexOf(parent) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n else {\n if (this.filteredResult.indexOf(record) === -1 && this.flatFilteredData.indexOf(record) !== -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n }\n }\n else {\n if (!isNullOrUndefined(parent)) {\n var hierarchyMode_1 = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode_1 === 'Child' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(parent) !== -1) {\n this.addParentRecord(parent);\n }\n }\n else {\n this.addParentRecord(parent);\n }\n }\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n };\n Filter.prototype.checkChildExsist = function (records) {\n var childRec = getObject('childRecords', records);\n var isExist = false;\n for (var count = 0; count < childRec.length; count++) {\n var ischild = childRec[count].childRecords;\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'Both') && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== ''))) {\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (!Object.prototype.hasOwnProperty.call(uniqueIDValue, childRec[count].uniqueID)) {\n this.filteredResult.push(childRec[count]);\n setValue('uniqueIDFilterCollection.' + childRec[count].uniqueID, childRec[count], this.parent);\n isExist = true;\n }\n }\n if ((hierarchyMode === 'None')\n && (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(childRec[count]) !== -1) {\n isExist = true;\n break;\n }\n }\n if (!isNullOrUndefined(ischild) && ischild.length) {\n isExist = this.checkChildExsist(childRec[count]);\n }\n if ((hierarchyMode === 'Child' || hierarchyMode === 'Both') && childRec.length) {\n isExist = true;\n }\n }\n return isExist;\n };\n Filter.prototype.updateFilterLevel = function () {\n var record = this.filteredResult;\n var len = this.filteredResult.length;\n for (var c = 0; c < len; c++) {\n var parent_2 = getParentData(this.parent, record[c].parentUniqueID);\n var isPrst = record.indexOf(parent_2) !== -1;\n if (isPrst) {\n var parent_3 = getParentData(this.parent, record[c].parentUniqueID, true);\n record[c].filterLevel = parent_3.filterLevel + 1;\n }\n else {\n record[c].filterLevel = 0;\n this.filteredParentRecs.push(record[c]);\n }\n }\n };\n Filter.prototype.clearFilterLevel = function (data) {\n var count = 0;\n var flatData = data.flatData;\n var len = flatData.length;\n var currentRecord;\n for (count; count < len; count++) {\n currentRecord = flatData[count];\n var fLevel = currentRecord.filterLevel;\n if (fLevel || fLevel === 0 || !isNullOrUndefined(currentRecord.hasFilteredChildRecords)) {\n currentRecord.hasFilteredChildRecords = null;\n currentRecord.filterLevel = null;\n }\n }\n this.filteredResult = [];\n this.parent.notify('updateResults', { result: flatData, count: flatData.length });\n };\n return Filter;\n}());\nexport { Filter };\n","import { getObject, Grid, ExcelExport as GridExcel } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, getParentData, getExpandStatus } from '../utils';\nimport { isNullOrUndefined, setValue, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid Excel Export module\n *\n * @hidden\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for Excel Export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ExcelExport(parent) {\n this.isCollapsedStatePersist = false;\n Grid.Inject(GridExcel);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ExcelExport module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.addEventListener = function () {\n this.parent.on('updateResults', this.updateExcelResultModel, this);\n this.parent.on('excelCellInfo', this.excelQueryCellInfo, this);\n this.parent.grid.on('export-RowDataBound', this.exportRowDataBound, this);\n this.parent.grid.on('finalPageSetup', this.finalPageSetup, this);\n };\n /**\n * To destroy the Excel Export\n *\n * @returns {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateResults', this.updateExcelResultModel);\n this.parent.off('excelCellInfo', this.excelQueryCellInfo);\n this.parent.grid.off('export-RowDataBound', this.exportRowDataBound);\n this.parent.grid.off('finalPageSetup', this.finalPageSetup);\n };\n ExcelExport.prototype.updateExcelResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n ExcelExport.prototype.Map = function (excelExportProperties, \n /* eslint-disable-next-line */\n isMultipleExport, workbook, isBlob, isCsv) {\n var _this = this;\n var dataSource = this.parent.dataSource;\n var property = Object();\n setValue('isCsv', isCsv, property);\n setValue('cancel', false, property);\n if (!isNullOrUndefined(excelExportProperties)) {\n this.isCollapsedStatePersist = excelExportProperties.isCollapsedStatePersist;\n }\n return new Promise(function (resolve) {\n var dm = _this.isLocal() && !(dataSource instanceof DataManager) ? new DataManager(dataSource)\n : _this.parent.dataSource;\n var query = new Query();\n if (!_this.isLocal()) {\n query = _this.generateQuery(query);\n setValue('query', query, property);\n }\n _this.parent.trigger(event.beforeExcelExport, extend(property, excelExportProperties));\n if (getObject('cancel', property)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customData = null;\n if (!isNullOrUndefined(excelExportProperties) && !isNullOrUndefined(excelExportProperties.dataSource)) {\n customData = excelExportProperties.dataSource;\n }\n excelExportProperties = _this.manipulateExportProperties(excelExportProperties, dataSource, e);\n return _this.parent.grid.excelExportModule.Map(_this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob).then(function (book) {\n if (customData != null) {\n excelExportProperties.dataSource = customData;\n }\n else {\n delete excelExportProperties.dataSource;\n }\n resolve(book);\n });\n });\n });\n };\n ExcelExport.prototype.generateQuery = function (query, property) {\n if (!isNullOrUndefined(property) && property.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n property.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n ExcelExport.prototype.manipulateExportProperties = function (property, dtSrc, queryResult) {\n //count not required for this query\n var args = Object();\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n if (!isNullOrUndefined(property) && !isNullOrUndefined(property.exportType)) {\n setValue('exportType', property.exportType, args);\n }\n if (!this.isLocal()) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getObject('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!this.isLocal()) {\n this.parent.flatData = [];\n }\n if (property && property.dataSource && this.isLocal()) {\n var flatsData = this.parent.flatData;\n var dataSrc = property.dataSource instanceof DataManager ? property.dataSource.dataSource.json : property.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatsData;\n }\n property = isNullOrUndefined(property) ? Object() : property;\n property.dataSource = new DataManager({ json: dtSrc });\n return property;\n };\n /**\n * TreeGrid Excel Export cell modifier\n *\n * @param {ExcelQueryCellInfoEventArgs} args - current cell details\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.excelQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = args.data;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.indent = pad;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('excelQueryCellInfo', args);\n };\n ExcelExport.prototype.exportRowDataBound = function (excelRow) {\n if (excelRow.type === 'excel') {\n var excelrowobj = excelRow.rowObj.data;\n var filtercolumnlength = this.parent.grid.filterSettings.columns.length;\n if (excelrowobj.parentItem && getParentData(this.parent, excelrowobj.parentItem.uniqueID, Boolean(filtercolumnlength))) {\n var rowlength = excelRow.excelRows.length;\n var rowlevel = excelrowobj.level;\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 }\n };\n /* eslint-disable-next-line */\n ExcelExport.prototype.finalPageSetup = function (workbook) {\n for (var i = 0; i < workbook.worksheets.length; i++) {\n if (workbook.worksheets[i].rows) {\n workbook.worksheets[i].pageSetup = { isSummaryRowBelow: false };\n }\n }\n };\n ExcelExport.prototype.isLocal = function () {\n return !isRemoteData(this.parent) && isOffline(this.parent);\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { getObject, PdfExport as GridPdf, Grid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline } from '../utils';\nimport { isNullOrUndefined, setValue, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid PDF Export module\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for PDF export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function PdfExport(parent) {\n Grid.Inject(GridPdf);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} PdfExport module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.addEventListener = function () {\n this.parent.on('pdfCellInfo', this.pdfQueryCellInfo, this);\n this.parent.on('updateResults', this.updatePdfResultModel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('pdfCellInfo', this.pdfQueryCellInfo);\n this.parent.off('updateResults', this.updatePdfResultModel);\n };\n /**\n * To destroy the PDF Export\n *\n * @returns {void}\n * @hidden\n */\n PdfExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n PdfExport.prototype.updatePdfResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n PdfExport.prototype.Map = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n var dtSrc = this.parent.dataSource;\n var prop = Object();\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('cancel', false, prop);\n return new Promise(function (resolve) {\n var dm = isLocal && !(dtSrc instanceof DataManager) ? new DataManager(dtSrc)\n : _this.parent.dataSource;\n var query = new Query();\n if (!isLocal) {\n query = _this.generateQuery(query);\n setValue('query', query, prop);\n }\n _this.parent.trigger(event.beforePdfExport, extend(prop, pdfExportProperties));\n if (getObject('cancel', prop)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customsData = null;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n customsData = pdfExportProperties.dataSource;\n }\n pdfExportProperties = _this.manipulatePdfProperties(pdfExportProperties, dtSrc, e);\n return _this.parent.grid.pdfExportModule.Map(_this.parent.grid, pdfExportProperties, isMultipleExport, pdfDoc, isBlob).then(function (document) {\n if (customsData != null) {\n pdfExportProperties.dataSource = customsData;\n }\n else {\n delete pdfExportProperties.dataSource;\n }\n resolve(document);\n });\n });\n });\n };\n PdfExport.prototype.generateQuery = function (query, prop) {\n if (!isNullOrUndefined(prop) && prop.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n prop.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n PdfExport.prototype.manipulatePdfProperties = function (prop, dtSrc, queryResult) {\n var args = {};\n //count not required for this query\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n setValue('isPdfExport', true, args);\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.isCollapsedStatePersist)) {\n setValue('isCollapsedStatePersist', prop.isCollapsedStatePersist, args);\n }\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.exportType)) {\n setValue('exportType', prop.exportType, args);\n }\n if (!isLocal) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getValue('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!isLocal) {\n this.parent.flatData = [];\n }\n if (prop && prop.dataSource && isLocal) {\n var flatDatas = this.parent.flatData;\n var dataSrc = prop.dataSource instanceof DataManager ? prop.dataSource.dataSource.json : prop.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatDatas;\n }\n prop = isNullOrUndefined(prop) ? {} : prop;\n prop.dataSource = new DataManager({ json: dtSrc });\n return prop;\n };\n /**\n * TreeGrid PDF Export cell modifier\n *\n * @param {PdfQueryCellInfoEventArgs} args - Current cell details\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.pdfQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = getObject('data', args);\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.paragraphIndent = pad * 3;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('pdfQueryCellInfo', args);\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { Grid } from '@syncfusion/ej2-grids';\nimport { Page as GridPage } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { getValue, isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * The `Page` module is used to render pager and handle paging action.\n *\n * @hidden\n */\nvar Page = /** @class */ (function () {\n function Page(parent) {\n Grid.Inject(GridPage);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.addEventListener = function () {\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandPagedchilds, this);\n this.parent.on(events.pagingActions, this.pageAction, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandPagedchilds);\n this.parent.off(events.pagingActions, this.pageAction);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Pager module name\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.parent.grid.pagerModule.refresh();\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.parent.grid.pagerModule.goToPage(pageNo);\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n this.parent.grid.pagerModule.updateExternalMessage(message);\n };\n /**\n * @param {{action: string, row: HTMLTableRowElement, record: ITreeData, args: RowCollapsedEventArgs}} rowDetails - Expand Collapse details arguments\n * @param {string} rowDetails.action - Expand Collapse action type\n * @param {HTMLTableRowElement} rowDetails.row - Row element\n * @param {ITreeData} rowDetails.record - Row object data\n * @param {RowCollapsedEventArgs} rowDetails.args - Expand Collapse event arguments\n * @hidden\n * @returns {void}\n */\n Page.prototype.collapseExpandPagedchilds = function (rowDetails) {\n rowDetails.record.expanded = rowDetails.action === 'collapse' ? false : true;\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[primaryKeyField_1] === rowDetails.record[primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[action] === 'collapse') {\n targetEle = ret[row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[action] === 'expand') {\n targetEle = ret[row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[t]);\n var res = [];\n if (temp[t].hasChildRecords) {\n res = pagedResults.filter(function (e) {\n return temp[t].uniqueID === e.parentUniqueID;\n });\n newResults = this_1.pageRoot(pagedResults, res, newResults);\n }\n };\n var this_1 = this;\n for (var t = 0; t < temp.length; t++) {\n _loop_1(t);\n }\n return newResults;\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && ((this.parent.searchSettings.key !== this.parent.grid.searchSettings.key) ||\n (this.parent.filterSettings.columns.length !== this.parent.grid.filterSettings.columns.length))) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.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.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var tObj = this.parent;\n if (args.row.rowIndex === 0 || tObj.getSelectedRecords().length > 1) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent', tObj.element.id + '_gridcontrol_outdent'], false);\n }\n else {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex])) {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex]) &&\n (tObj.getCurrentViewRecords()[args.row.rowIndex].level >\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level)) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], false);\n }\n else {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level ===\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level === 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], false);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level !== 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n }\n }\n if (args.row.rowIndex === 0 && !isNullOrUndefined(args.data.parentItem)) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length) {\n var record = tObj.getCurrentViewRecords()[tObj.getSelectedRowIndexes()[0] - 1];\n var dropIndex = void 0;\n if (record.level > tObj.getSelectedRecords()[0].level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record.parentItem.taskData) {\n dropIndex = i;\n }\n }\n }\n else {\n dropIndex = tObj.getSelectedRowIndexes()[0] - 1;\n }\n tObj.reorderRows([tObj.getSelectedRowIndexes()[0]], dropIndex, 'child');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length) {\n var index = tObj.getSelectedRowIndexes()[0];\n var dropIndex = void 0;\n var parentItem = tObj.getSelectedRecords()[0].parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === parentItem.taskData) {\n dropIndex = i;\n }\n }\n tObj.reorderRows([index], dropIndex, 'below');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[p]);\n if (!summaryRow) {\n parentData.push(filteredData[p]);\n }\n }\n var parentRecords = findParentRecords(parentData);\n var flatRecords = parentData.slice();\n var summaryLength = Object.keys(this.parent.aggregates).length;\n var dataLength = Object.keys(parentRecords).length;\n var childRecordsLength;\n var columns = this.parent.getColumns();\n if (this.parent.aggregates.filter(function (x) { return x.showChildSummary; }).length) {\n for (var i = 0, len = dataLength; i < len; i++) {\n parentRecord = parentRecords[i];\n childRecordsLength = this.getChildRecordsLength(parentRecord, flatRecords);\n if (childRecordsLength) {\n var _loop_1 = function (summaryRowIndex, len_1) {\n var item = void 0;\n item = {};\n for (var i_1 = 0; i_1 < columns.length; i_1++) {\n var field = (isNullOrUndefined(getObject('field', columns[i_1]))) ?\n columns[i_1] : getObject('field', (columns[i_1]));\n item[field] = null;\n }\n item = this_1.createSummaryItem(item, this_1.parent.aggregates[summaryRowIndex - 1]);\n if (this_1.parent.aggregates[summaryRowIndex - 1].showChildSummary) {\n var idx_1;\n flatRecords.map(function (e, i) {\n if (e.uniqueID === parentRecord.uniqueID) {\n idx_1 = i;\n return;\n }\n });\n var currentIndex = idx_1 + childRecordsLength + summaryRowIndex;\n var summaryParent = extend({}, parentRecord);\n delete summaryParent.childRecords;\n delete summaryParent[this_1.parent.childMapping];\n setValue('parentItem', summaryParent, item);\n var level = getObject('level', summaryParent);\n setValue('level', level + 1, item);\n setValue('isSummaryRow', true, item);\n setValue('parentUniqueID', summaryParent.uniqueID, item);\n if (isSort) {\n var childRecords = getObject('childRecords', parentRecord);\n if (childRecords.length) {\n childRecords.push(item);\n }\n }\n flatRecords.splice(currentIndex, 0, item);\n }\n else {\n return \"continue\";\n }\n };\n var this_1 = this;\n for (var summaryRowIndex = 1, len_1 = summaryLength; summaryRowIndex <= len_1; summaryRowIndex++) {\n _loop_1(summaryRowIndex, len_1);\n }\n this.flatChildRecords = [];\n }\n }\n }\n else {\n var items = {};\n for (var columnIndex = 0, length_1 = columns.length; columnIndex < length_1; columnIndex++) {\n var fields = isNullOrUndefined(getObject('field', columns[columnIndex])) ?\n columns[columnIndex] : getObject('field', columns[columnIndex]);\n items[fields] = null;\n }\n for (var summaryRowIndex = 1, length_2 = summaryLength; summaryRowIndex <= length_2; summaryRowIndex++) {\n this.createSummaryItem(items, this.parent.aggregates[summaryRowIndex - 1]);\n }\n }\n return flatRecords;\n };\n Aggregate.prototype.getChildRecordsLength = function (parentData, flatData) {\n var recordLength = Object.keys(flatData).length;\n var record;\n for (var i = 0, len = recordLength; i < len; i++) {\n record = flatData[i];\n var parent_1 = isNullOrUndefined(record.parentItem) ? null :\n flatData.filter(function (e) { return e.uniqueID === record.parentItem.uniqueID; })[0];\n if (parentData === parent_1) {\n this.flatChildRecords.push(record);\n var hasChild = getObject('hasChildRecords', record);\n if (hasChild) {\n this.getChildRecordsLength(record, flatData);\n }\n else {\n continue;\n }\n }\n }\n return this.flatChildRecords.length;\n };\n Aggregate.prototype.createSummaryItem = function (itemData, summary) {\n var summaryColumnLength = Object.keys(summary.columns).length;\n for (var i = 0, len = summaryColumnLength; i < len; i++) {\n var displayColumn = isNullOrUndefined(summary.columns[i].columnName) ? summary.columns[i].field :\n summary.columns[i].columnName;\n var keys = Object.keys(itemData);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === displayColumn) {\n if (this.flatChildRecords.length) {\n itemData[key] = this.getSummaryValues(summary.columns[i], this.flatChildRecords);\n }\n else if (this.parent.isLocalData) {\n var data = this.parent.dataSource instanceof DataManager ? this.parent.dataSource.dataSource.json\n : this.parent.flatData;\n itemData[key] = this.getSummaryValues(summary.columns[i], data);\n }\n }\n else {\n continue;\n }\n }\n }\n return itemData;\n };\n Aggregate.prototype.getSummaryValues = function (summaryColumn, summaryData) {\n var qry = new Query();\n var single = {};\n var helper = {};\n var type = !isNullOrUndefined(summaryColumn.field) ?\n this.parent.getColumnByField(summaryColumn.field).type : undefined;\n summaryColumn.setPropertiesSilent({ format: this.getFormatFromType(summaryColumn.format, type) });\n summaryColumn.setFormatter(this.parent.grid.locale);\n var formatFn = summaryColumn.getFormatter() || (function () { return function (a) { return a; }; })();\n summaryColumn.setTemplate(helper);\n var tempObj = summaryColumn.getTemplate(2);\n qry.queries = this.summaryQuery;\n qry.requiresCount();\n var sumData = new DataManager(summaryData).executeLocal(qry);\n var types = summaryColumn.type;\n var summaryKey;\n types = [summaryColumn.type];\n for (var i = 0; i < types.length; i++) {\n summaryKey = types[i];\n var key = summaryColumn.field + ' - ' + types[i].toLowerCase();\n var val = types[i] !== 'Custom' ? getObject('aggregates', sumData) :\n calculateAggregate(types[i], sumData, summaryColumn, this.parent);\n var disp = summaryColumn.columnName;\n var value_1 = types[i] !== 'Custom' ? val[key] : val;\n single[disp] = single[disp] || {};\n single[disp][key] = value_1;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(value_1) : ' ';\n }\n helper.format = summaryColumn.getFormatter();\n var cellElement = createElement('td', {\n className: 'e-summary'\n });\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property, '', null, null, cellElement);\n this.parent[renderReactTemplates]();\n }\n else {\n appendChildren(cellElement, tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property));\n }\n var value = single[summaryColumn.columnName][summaryKey];\n var summaryValue;\n if (cellElement.innerHTML.indexOf(value) === -1) {\n summaryValue = cellElement.innerHTML + value;\n return summaryValue;\n }\n else {\n return cellElement.innerHTML;\n }\n };\n Aggregate.prototype.getFormatFromType = function (summaryformat, type) {\n if (isNullOrUndefined(type) || typeof summaryformat !== 'string') {\n return summaryformat;\n }\n var obj;\n switch (type) {\n case 'number':\n obj = { format: summaryformat };\n break;\n case 'datetime':\n obj = { type: 'dateTime', skeleton: summaryformat };\n break;\n case 'date':\n obj = { type: type, skeleton: summaryformat };\n break;\n }\n return obj;\n };\n /**\n * To destroy the Aggregate module\n *\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Aggregate;\n}());\nexport { Aggregate };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Sort as GridSort, Grid, getActualProperties } from '@syncfusion/ej2-grids';\nimport { getParentData } from '../utils';\n/**\n * Internal dataoperations for TreeGrid\n *\n * @hidden\n */\nvar Sort = /** @class */ (function () {\n function Sort(grid) {\n Grid.Inject(GridSort);\n this.parent = grid;\n this.taskIds = [];\n this.flatSortedData = [];\n this.storedIndex = -1;\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Sort module name\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n this.parent.on('createSort', this.createdSortedRecords, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n this.parent.off('createSort', this.createdSortedRecords);\n };\n Sort.prototype.createdSortedRecords = function (sortParams) {\n var data = sortParams.modifiedData;\n var srtQry = sortParams.srtQry;\n this.iterateSort(data, srtQry);\n this.storedIndex = -1;\n sortParams.modifiedData = this.flatSortedData;\n this.flatSortedData = [];\n };\n Sort.prototype.iterateSort = function (data, srtQry) {\n for (var d = 0; d < data.length; d++) {\n if (this.parent.grid.filterSettings.columns.length > 0 || this.parent.grid.searchSettings.key !== '') {\n if (!isNullOrUndefined(getParentData(this.parent, data[d].uniqueID, true))) {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[d];\n }\n }\n else {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[d];\n }\n if (data[d].hasChildRecords) {\n var childSort = (new DataManager(data[d].childRecords).executeLocal(srtQry));\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { Grid, ContextMenu as cmenu } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, select } from '@syncfusion/ej2-base';\n/**\n * ContextMenu Module for TreeGrid\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent) {\n Grid.Inject(cmenu);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on('contextMenuOpen', this.contextMenuOpen, this);\n this.parent.on('contextMenuClick', this.contextMenuClick, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('contextMenuOpen', this.contextMenuOpen);\n this.parent.off('contextMenuClick', this.contextMenuClick);\n };\n ContextMenu.prototype.contextMenuOpen = function (args) {\n var addRow = select('#' + this.parent.element.id + '_gridcontrol_cmenu_AddRow', args.element);\n var editRecord = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Edit', args.element);\n if (addRow) {\n if (this.parent.grid.editSettings.allowAdding === false) {\n addRow.style.display = 'none';\n }\n else {\n addRow.style.display = 'block';\n }\n }\n if ((this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch')\n && !(isNullOrUndefined(editRecord)) && !(editRecord.classList.contains('e-menu-hide'))) {\n editRecord.style.display = 'none';\n }\n };\n ContextMenu.prototype.contextMenuClick = function (args) {\n if (args.item.id === 'Above' || args.item.id === 'Below' || args.item.id === 'Child') {\n this.parent.notify('savePreviousRowPosition', args);\n this.parent.setProperties({ editSettings: { newRowPosition: args.item.id } }, true);\n this.parent.addRecord();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ContextMenu module name\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Gets the context menu element from the TreeGrid.\n *\n * @returns {Element} Return Context Menu root element.\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.parent.grid.contextMenuModule.getContextMenu();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend, setValue, getValue, merge } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.cell.cellIndex;\n var frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();\n if (frozenCols && args.columnObject.index > frozenCols) {\n actualCellIndex = actualCellIndex + frozenCols;\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n var colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;\n if (colCount === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n }\n else if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[this.addRowIndex][parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[this.addRowIndex][parentItem]) {\n parentUniqueID = this.batchRecords[this.addRowIndex][parentItem][uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[rowObjectIndex].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[this.addRowIndex][level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[rowObjectIndex].data = added;\n this.newBatchRowAdded = false;\n }\n if (this.parent.frozenColumns || this.parent.getFrozenColumns()\n && this.parent.grid.getRowsObject()[rowObjectIndex].edit === 'add') {\n merge(this.currentViewRecords[rowObjectIndex], this.parent.grid.getRowsObject()[rowObjectIndex].changes);\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[isTabLastRow] = false;\n return;\n }\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('aria-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[i]);\n if (this.parent.frozenRows || this.parent.frozenColumns || this.parent.getFrozenColumns()) {\n row.push(this.parent.grid.getMovableRows()[i]);\n }\n }\n }\n if (!isNullOrUndefined(data.parentItem)) {\n var parentItem = getParentData(this.parent, data.parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(data);\n parentItem.childRecords.splice(childIndex, 1);\n }\n this.batchDeletedRecords = extendArray(this.batchDeletedRecords);\n this.batchDeletedRecords.push(data);\n }\n childs.push(data);\n records = childs;\n for (var i = 0; i < records.length; i++) {\n var indexvalue = this.batchRecords.map(function (e) { return e[primarykey]; }).indexOf(records[i][primarykey]);\n if (indexvalue !== -1) {\n this.batchRecords.splice(indexvalue, 1);\n }\n }\n for (var i = 0; i < row.length; i++) {\n if (!isNullOrUndefined(row[i])) {\n this.parent.grid.selectionModule.selectedRecords.push(row[i]);\n }\n }\n };\n BatchEdit.prototype.updateRowIndex = function () {\n var rows = this.parent.grid.getDataRows();\n for (var i = 0; i < rows.length; i++) {\n rows[i].setAttribute('aria-rowindex', i.toString());\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var mRows = this.parent.grid.getMovableDataRows();\n var freezeRightRows = this.parent.grid.getFrozenRightDataRows();\n for (var i = 0; i < mRows.length; i++) {\n mRows[i].setAttribute('aria-rowindex', i.toString());\n if (freeze) {\n freezeRightRows[i].setAttribute('aria-rowindex', i.toString());\n }\n }\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[addedRecords][i][parentItem])) {\n if (this.parent.getBatchChanges()[addedRecords][i][parentItem][primaryKey] === records[this.addRowIndex][primaryKey]) {\n this.batchChildCount = this.batchChildCount + 1;\n }\n }\n }\n };\n BatchEdit.prototype.beforeBatchSave = function (e) {\n var changeRecords = 'changedRecords';\n var deleterecords = 'deletedRecords';\n var changedRecords = e.batchChanges[changeRecords];\n if (e.batchChanges[changeRecords].length) {\n var columnName = void 0;\n for (var i = 0; i < changedRecords.length; i++) {\n editAction({ value: changedRecords[i], action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName);\n }\n }\n if (e.batchChanges[deleterecords].length) {\n var deletedRecords = e.batchChanges[deleterecords];\n var record = deletedRecords;\n for (var i = 0; i < record.length; i++) {\n this.deleteUniqueID(record[i].uniqueID);\n var childs = findChildrenRecords(record[i]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[c].uniqueID);\n }\n e.batchChanges[deleterecords] = e.batchChanges[deleterecords].concat(childs);\n }\n }\n this.isAdd = false;\n };\n BatchEdit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n BatchEdit.prototype.batchCancelAction = function () {\n var targetElement = 'targetElement';\n var index;\n var parentItem = 'parentItem';\n var indexvalue = 'index';\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var childRecords = 'childRecords';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (!isNullOrUndefined(this.batchAddedRecords)) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchAddedRecords[i][parentItem] ? this.batchAddedRecords[i][parentItem][primaryKey]\n : this.batchAddedRecords[i][primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[index])) {\n var children = currentViewRecords[index][childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[j][primaryKey] === this.batchAddedRecords[i][primaryKey]) {\n currentViewRecords[index][childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[targetElement])) {\n var row = this.parent[targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[i][parentItem])) {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchDeletedRecords[i][parentItem][primaryKey]);\n var positionIndex = this.batchDeletedRecords[i][indexvalue] === 0 ? this.batchDeletedRecords[i][indexvalue] :\n this.batchDeletedRecords[i][indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[index])) {\n currentViewRecords[index][childRecords].splice(positionIndex, 0, this.batchDeletedRecords[i]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(currentViewRecords[0][primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[i]);\n delete taskData.parentItem;\n delete taskData.uniqueID;\n delete taskData.index;\n delete taskData.level;\n delete taskData.hasChildRecords;\n delete taskData.childRecords;\n delete taskData.parentUniqueID;\n if (!isNullOrUndefined(taskData.primaryParent)) {\n delete taskData.primaryParent;\n }\n addRecords[i].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[i];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[i].parentItem)) {\n updateParentRow(primarykey_1, addRecords[i].parentItem, 'add', this.parent, this.isSelfReference, addRecords[i]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[i].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[i], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[i][parentItem])) {\n var indexValue = currentViewRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(addRecords[i][parentItem][primarykey_1]);\n var children = currentViewRecords[indexValue][childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[j][primarykey_1] === addRecords[i][primarykey_1]) {\n currentViewRecords[indexValue][childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[deletedRecords].length) {\n for (i = 0; i < batchChanges[deletedRecords].length; i++) {\n editAction({ value: batchChanges[deletedRecords][i], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_1 = 0; i_1 < data.length; i_1++) {\n data[i_1][index] = i_1;\n setValue('uniqueIDCollection.' + data[i_1][uniqueID] + '.index', i_1, this.parent);\n if (!data[i_1][level]) {\n this.parent.parentData.push(data[i_1]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[i][index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n args[index] = this.parent.getSelectedRows()[0][rowIndex];\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.ariaRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[rowIndex][treeObj.getPrimaryKeyFieldNames()[0]] : -1;\n treeObj.grid.query.addParams('relationalKey', keyData);\n }\n else if (eventName === 'actionComplete') {\n var paramsLength = treeObj.grid.query.params.length;\n for (var i = 0; i < paramsLength; i++) {\n if (treeObj.grid.query.params[i].key === 'relationalKey') {\n treeObj.grid.query.params.splice(i);\n }\n }\n }\n }\n if (this.parent.enableInfiniteScrolling && eventName === 'actionComplete') {\n this.infiniteAddAction(eventArgs);\n }\n if (this.parent.editSettings.mode === 'Batch' && eventArgs.requestType === 'paging') {\n this.parent.notify('batchPageAction', {});\n }\n };\n Edit.prototype.infiniteAddAction = function (args) {\n if ((args.requestType === 'save' && args.action === 'add') || args.requestType === 'delete') {\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.selectedIndex !== -1\n && (args.requestType === 'save' && args.action === 'add')) {\n var rowObjects = this.parent.grid.getRowsObject();\n var newRowObject = rowObjects.splice(0, 1)[0];\n var newRowObjectIndex = this.addRowIndex;\n var currentData = this.parent.getCurrentViewRecords();\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n newRowObjectIndex += findChildrenRecords(currentData[newRowObjectIndex + 1]).length;\n }\n newRowObjectIndex = this.parent.editSettings.newRowPosition === 'Below' ? newRowObjectIndex + 1 : newRowObjectIndex;\n rowObjects.splice(newRowObjectIndex, 0, newRowObject);\n var newRecord = currentData.splice(0, 1)[0];\n currentData.splice(newRowObjectIndex, 0, newRecord);\n this.updateInfiniteCurrentViewData(newRecord, this.addRowIndex);\n }\n var movableRows = this.parent.grid.getMovableRows();\n var movableRowsObject = this.parent.grid.getMovableRowsObject();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (!isCache) {\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n }\n if (!isCache && this.parent.getFrozenColumns() > 0) {\n resetRowIndex(this.parent.grid, movableRowsObject, movableRows, 0);\n this.updateIndex(this.parent.grid.dataSource, movableRows, this.parent.getCurrentViewRecords());\n }\n }\n };\n Edit.prototype.updateInfiniteCurrentViewData = function (newRecord, newRowIndex) {\n var _this = this;\n var infiniteData = 'infiniteCurrentViewData';\n var updateCurrentViewData = 'updateCurrentViewData';\n var size = Math.ceil(newRowIndex / this.parent.grid.pageSettings.pageSize);\n var page = size > 0 ? size : 1;\n var dataIndex = newRowIndex - ((page - 1) * this.parent.pageSettings.pageSize);\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n infiniteCurrentViewData[1].splice(0, 1);\n var data = infiniteCurrentViewData[page];\n if (!isNullOrUndefined(this.addRowRecord)) {\n data.filter(function (e, index) {\n if (e.uniqueID === _this.addRowRecord.uniqueID) {\n dataIndex = index;\n }\n });\n if (this.addRowRecord.hasChildRecords && this.addRowRecord.childRecords.length &&\n this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n dataIndex += findChildrenRecords(this.addRowRecord).length;\n }\n }\n if (dataIndex >= this.parent.pageSettings.pageSize) {\n page += 1;\n data = infiniteCurrentViewData[page];\n dataIndex = dataIndex - this.parent.pageSettings.pageSize >= 0 ? dataIndex - this.parent.pageSettings.pageSize : 0;\n }\n dataIndex = this.parent.editSettings.newRowPosition === 'Below' ? dataIndex + 1 : dataIndex;\n data.splice(dataIndex, 0, newRecord);\n this.parent.grid.infiniteScrollModule[updateCurrentViewData]();\n };\n Edit.prototype.recordDoubleClick = function (args) {\n var target = args.target;\n if (isNullOrUndefined(target.closest('td.e-rowcell'))) {\n return;\n }\n if (!(this.parent.grid.editSettings.allowEditing) || this.parent.grid.isEdit) {\n return;\n }\n var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('aria-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('aria-rowindex');\n tr.setAttribute('aria-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[promise];\n delete args[promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex)) {\n args.row.setAttribute('aria-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEdit', false, this.parent.grid);\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else if (this.parent.getFrozenRightRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getFrozenRightRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getMovableRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getMovableRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n var mRow;\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {\n mRow = this.parent.grid.getRows()[rowIndex];\n }\n else if (args.cell.closest('.e-movableheader') || args.cell.closest('.e-movablecontent')) {\n mRow = this.parent.grid.getMovableRows()[rowIndex];\n }\n else {\n mRow = this.parent.grid.getFrozenRightRows()[rowIndex];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n else if (this.parent.getFrozenColumns() > 0) {\n if (args.cell.closest('.e-frozenheader') || args.cell.closest('.e-frozencontent')) {\n mRow = this.parent.grid.getRows()[rowIndex];\n }\n else {\n mRow = this.parent.grid.getMovableRows()[rowIndex];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n removeClass([row], ['e-editedrow', 'e-batchrow']);\n removeClass(row.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n if (this.parent['isCellSaveFocus'] !== false) {\n this.parent.grid.focusModule.restoreFocus();\n }\n editAction({ value: args.rowData, action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, args.columnName);\n if ((row.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'enter') {\n this.keyPress = null;\n }\n var saveArgs = {\n type: 'save', column: this.parent.getColumnByField(args.columnName), data: args.rowData,\n previousData: args.previousValue, row: row, target: args.cell\n };\n if (this.parent.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n this.parent.grid.refresh();\n }\n this.parent.trigger(events.actionComplete, saveArgs);\n };\n Edit.prototype.lastCellTab = function () {\n if (!this.parent.grid.isEdit && this.isOnBatch && this.keyPress === 'tab' && this.parent.editSettings.mode === 'Cell') {\n if (!this.parent.editSettings.allowNextRowEdit) {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n this.keyPress = null;\n }\n else {\n this.enableToolbarItems('edit');\n }\n }\n };\n Edit.prototype.updateCell = function (args, rowIndex) {\n this.parent.grid.editModule.updateCell(rowIndex, args.columnName, args.rowData[args.columnName]);\n this.parent.grid.getRowsObject()[rowIndex].data = args.rowData;\n };\n Edit.prototype.crudAction = function (details, columnName) {\n editAction(details, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName, this.addRowRecord);\n this.parent.parentData = [];\n var data = this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n data[i].index = i;\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (details.value[key] === data[i][key]) {\n if (details.action === 'add') {\n data[i].level = this.internalProperties.level;\n data[i].taskData = this.internalProperties.taskData;\n data[i].uniqueID = this.internalProperties.uniqueID;\n if (!isNullOrUndefined(this.internalProperties.parentItem)) {\n data[i].parentItem = this.internalProperties.parentItem;\n data[i].parentUniqueID = this.internalProperties.parentUniqueID;\n }\n data[i].childRecords = this.internalProperties.childRecords;\n }\n }\n setValue('uniqueIDCollection.' + data[i].uniqueID + '.index', i, this.parent);\n var adaptor = this.parent.dataSource.adaptor;\n if ((isRemoteData(this.parent) || adaptor instanceof RemoteSaveAdaptor)) {\n setValue('uniqueIDCollection.' + data[i].uniqueID, data[i], this.parent);\n }\n if (!data[i].level) {\n this.parent.parentData.push(data[i]);\n }\n }\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[j];\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[l].classList.contains('e-gridrowindex0level0')) {\n treeColIndex = l;\n break;\n }\n }\n }\n for (var k = 0; k < this.parent.getRows().length; k++) {\n if (!rows[k].classList.contains('e-detailrow')) {\n count++;\n }\n var data2 = records[count];\n var index = data2.index;\n var level = data2.level;\n var row = rows[k];\n if (!isNullOrUndefined(data2.parentItem)) {\n index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);\n }\n var treecell = row.cells[treeColIndex];\n if (!isNullOrUndefined(treecell)) {\n for (var l = 0; l < treecell.classList.length; l++) {\n var value = treecell.classList[l];\n var remove = /e-gridrowindex/i;\n var removed = /e-griddetailrowindex/i;\n var result = value.match(remove);\n var results = value.match(removed);\n if (result != null) {\n removeClass([treecell], value);\n }\n if (results != null) {\n removeClass([treecell], value);\n }\n }\n if (!rows[k].classList.contains('e-detailrow')) {\n addClass([treecell], 'e-gridrowindex' + index + 'level' + level);\n }\n else {\n addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);\n }\n }\n }\n };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[index]) && records[index].expanded) {\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n index += findChildrenRecords(records[index]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.batchEditModule.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(records[index]).length;\n }\n }\n }\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange\n && (index || (this.parent.editSettings.newRowPosition === 'Child'\n || this.parent.editSettings.newRowPosition === 'Below'))) {\n if (index >= rows.length - 1) {\n index = rows.length - 2;\n }\n var r = 'rows';\n var newRowObject = this.parent.grid.contentModule[r][0];\n var focussedElement = document.activeElement;\n rows[index + 1][position](rows[0]);\n setValue('batchIndex', index + 1, this.batchEditModule);\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Above' ? index : index + 1;\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[r].splice(0, 1);\n this.parent.grid.contentModule[r].splice(rowObjectIndex, 0, newRowObject);\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var movableRows = this.parent.getMovableDataRows();\n var frows = 'freezeRows';\n var newFreezeRowObject = this.parent.grid.getRowsObject()[0];\n movableRows[index + 1][position](movableRows[0]);\n if (freeze) {\n var rightFrozenRows = this.parent.getFrozenRightDataRows();\n rightFrozenRows[index + 1][position](rightFrozenRows[0]);\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[frows].splice(0, 1);\n this.parent.grid.contentModule[frows].splice(rowObjectIndex, 0, newFreezeRowObject);\n }\n setValue('batchIndex', index + 1, this.batchEditModule);\n }\n if (this.parent.editSettings.mode === 'Row' || this.parent.editSettings.mode === 'Cell') {\n var errors = this.parent.grid.getContentTable().querySelectorAll('.e-griderror');\n for (var i = 0; i < errors.length; i++) {\n errors[i].remove();\n }\n setValue('errorRules', [], this.parent.grid.editModule.formObj);\n }\n if (isVirtualization) {\n this.prevAriaRowIndex = '-1';\n }\n focussedElement.focus();\n }\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[primaryKeys_2[0]] === args.data[i][primaryKeys_2[0]]) {\n data_1[i] = e;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < data_1.length; i++) {\n _loop_1(i);\n }\n }\n for (var i = 0; i < data_1.length; i++) {\n this.deleteUniqueID(data_1[i].uniqueID);\n var childs = findChildrenRecords(data_1[i]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[c].uniqueID);\n }\n args.data = args.data.concat(childs);\n }\n }\n if (args.requestType === 'add' || (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling))) {\n if (!(this.parent.grid.selectedRowIndex === -1 && this.isAddedRowByMethod)\n && args.index === this.parent.grid.selectedRowIndex || args.index === 0) {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n }\n if (this.parent.enableVirtualization) {\n var selector = '.e-row[aria-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[aria-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[args.index];\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' && isNullOrUndefined(this.addRowRecord)\n && !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = this.parent.grid.getCurrentViewRecords();\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.grid.getCurrentViewRecords().indexOf(this.addRowRecord);\n this.selectedIndex = parseInt(this.parent.getRows()[this.addRowIndex].getAttribute('aria-rowindex'), 10);\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[i].parentItem) {\n var parentItem = getParentData(this.parent, deletedValues[i].parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(deletedValues[i]);\n parentItem.childRecords.splice(childIndex, 1);\n }\n }\n }\n }\n return args;\n };\n /**\n * If the data,index and position given, Adds the record to treegrid rows otherwise it will create edit form.\n *\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index, position) {\n if (this.parent.editSettings.newRowPosition === this.previousNewRowPosition || this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n if (!this.isSelfReference && !isNullOrUndefined(data) && Object.hasOwnProperty.call(data, this.parent.childMapping)) {\n var addRecords = [];\n var previousEditMode = this.parent.editSettings.mode;\n var previousGridEditMode = this.parent.grid.editSettings.mode;\n addRecords.push(data);\n this.parent.setProperties({ editSettings: { mode: 'Batch' } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: 'Batch' } }, true);\n if (!isNullOrUndefined(position)) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n var updatedRecords = { addedRecords: addRecords, changedRecords: [], deletedRecords: [] };\n this.parent.notify(events.batchSave, { updatedRecords: updatedRecords, index: index });\n this.parent.setProperties({ editSettings: { mode: previousEditMode } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: previousGridEditMode } }, true);\n this.parent.refresh();\n }\n else {\n if (data) {\n if (index > -1) {\n this.selectedIndex = index;\n this.addRowIndex = index;\n }\n else {\n this.selectedIndex = this.parent.selectedRowIndex;\n this.addRowIndex = this.parent.selectedRowIndex;\n }\n if (position) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n this.parent.grid.editModule.addRecord(data, index);\n }\n else {\n this.parent.grid.editModule.addRecord(data, index);\n }\n }\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} Returns form validation results\n */\n Edit.prototype.editFormValidate = function () {\n return this.parent.grid.editModule.editFormValidate();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.destroyForm = function () {\n this.parent.grid.editModule.destroyForm();\n };\n Edit.prototype.contentready = function (e) {\n if (!isNullOrUndefined(e.args.requestType)\n && (e.args.requestType.toString() === 'delete' || e.args.requestType.toString() === 'save'\n || (this.parent.editSettings.mode === 'Batch' && e.args.requestType.toString() === 'batchsave'))) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns) {\n if (this.parent.grid.dataSource.length === this.parent.getMovableDataRows().length) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getMovableDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n }\n };\n /**\n * If the row index and field is given, edits the particular cell in a row.\n *\n * @returns {void}\n */\n Edit.prototype.editCell = function (rowIndex, field) {\n if (this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch') {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n this.parent.grid.editModule.editCell(rowIndex, field);\n }\n };\n return Edit;\n}());\nexport { Edit };\n","import { Grid, CommandColumn as Command } from '@syncfusion/ej2-grids';\n/**\n * Command Column Module for TreeGrid\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent) {\n Grid.Inject(Command);\n this.parent = parent;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns CommandColumn module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n //this.removeEventListener();\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","import { Grid, getObject } from '@syncfusion/ej2-grids';\nimport { DetailRow as detailrow } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isRemoteData } from '../utils';\n/**\n * TreeGrid Detail Row module\n *\n * @hidden\n */\nvar DetailRow = /** @class */ (function () {\n function DetailRow(parent) {\n Grid.Inject(detailrow);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns DetailRow module name\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n DetailRow.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.on('detaildataBound', this.detaildataBound, this);\n this.parent.grid.on('detail-indentcell-info', this.setIndentVisibility, this);\n this.parent.on('childRowExpand', this.childRowExpand, this);\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('actioncomplete', this.actioncomplete, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DetailRow.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.off('detaildataBound', this.detaildataBound);\n this.parent.off('childRowExpand', this.childRowExpand);\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('actioncomplete', this.actioncomplete);\n this.parent.grid.off('detail-indentcell-info', this.setIndentVisibility);\n };\n DetailRow.prototype.setIndentVisibility = function (args) {\n var visible = 'visible';\n args[visible] = false;\n };\n DetailRow.prototype.dataBoundArg = function () {\n var detailele = this.parent.getRows().filter(function (e) {\n return !e.classList.contains('e-detailrow');\n });\n for (var i = 0; i < detailele.length; i++) {\n var elements = detailele[i].getElementsByClassName('e-detailrowcollapse');\n var detailData = this.parent.grid.getRowObjectFromUID(detailele[i].getAttribute('data-Uid'));\n var parentItem = getObject('parentItem', this.parent.grid.getCurrentViewRecords()[i]);\n if (isNullOrUndefined(parentItem) || !isNullOrUndefined(parentItem) &&\n getExpandStatus(this.parent, detailData.data, this.parent.grid.getCurrentViewRecords())) {\n this.parent.grid.detailRowModule.expand(elements[0]);\n }\n }\n };\n DetailRow.prototype.childRowExpand = function (args) {\n var detailRowElement = args.row.getElementsByClassName('e-detailrowcollapse');\n if (!isNullOrUndefined(detailRowElement[0])) {\n this.parent.grid.detailRowModule.expand(detailRowElement[0]);\n }\n };\n DetailRow.prototype.rowExpandCollapse = function (args) {\n if (isRemoteData(this.parent)) {\n return;\n }\n for (var i = 0; i < args.detailrows.length; i++) {\n args.detailrows[i].style.display = args.action;\n }\n };\n DetailRow.prototype.detaildataBound = function (args) {\n var data = args.data;\n var row = args.detailElement.parentElement.previousSibling;\n var index = !isNullOrUndefined(data.parentItem) ? data.parentItem.index : data.index;\n var expandClass = 'e-gridrowindex' + index + 'level' + data.level;\n var classlist = row.querySelector('.' + expandClass).classList;\n var gridClas = [].slice.call(classlist).filter(function (gridclass) { return (gridclass === expandClass); });\n var newNo = gridClas[0].length;\n var slicedclas = gridClas.toString().slice(6, newNo);\n var detailClass = 'e-griddetail' + slicedclas;\n addClass([args.detailElement.parentElement], detailClass);\n };\n DetailRow.prototype.actioncomplete = function (args) {\n if (args.requestType === 'beginEdit' || args.requestType === 'add') {\n var spann = (args.row.querySelectorAll('.e-editcell')[0].getAttribute('colSpan'));\n var colum = parseInt(spann, 10) - 1;\n var updtdcolum = colum.toString();\n args.row.querySelectorAll('.e-editcell')[0].setAttribute('colSpan', updtdcolum);\n }\n var focusElement = this.parent.grid.contentModule.getRows();\n for (var i = 0; i < focusElement.length; i++) {\n focusElement[i].cells[0].visible = false;\n }\n var focusModule = getObject('focusModule', this.parent.grid);\n var matrix = 'refreshMatrix';\n focusModule[matrix](true)({ rows: this.parent.grid.contentModule.getRows() });\n };\n /**\n * Destroys the DetailModule.\n *\n * @function destroy\n * @returns {void}\n */\n DetailRow.prototype.destroy = function () {\n this.removeEventListener();\n };\n return DetailRow;\n}());\nexport { DetailRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Cell, CellType } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '@syncfusion/ej2-grids';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('aria-rowindex'), 10) === index; })[0];\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if (this.recordAdded && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[action]('data-ready', this.onDataReady, this);\n this.parent[action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction());\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[action]('edit-reset', this.resetIseditValue, this);\n this.parent[action]('get-virtual-data', this.getData, this);\n this.parent[action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n if (!this.parent.enableColumnVirtualization) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || this.isDataSourceChanged) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (this.parent.getRows().length && !this[initialRowTop] && !isNullOrUndefined(this.parent.getRowByIndex(0))) {\n var rowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top;\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (rowTop > 0) {\n this[initialRowTop] = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n else {\n this[initialRowTop] = this.content.getBoundingClientRect().top -\n this.parent.getRowByIndex(0).getBoundingClientRect().height;\n }\n }\n _super.prototype[dataBoundEve].call(this);\n };\n VirtualTreeContentRenderer.prototype.rowSelectedEvent = function (args) {\n var rowSelected = 'rowSelected';\n _super.prototype[rowSelected].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectVirtualRow = function (args) {\n if (this.parent.isEdit) {\n return;\n }\n var selectVirtualRow = 'selectVirtualRow';\n var containerRect = 'containerRect';\n if (isNullOrUndefined(this.observer[containerRect])) {\n this.observer[containerRect] = this.observers[containerRect];\n }\n if (isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule) || args.selectedIndex !== 0 ||\n isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule['addRowIndex'])) {\n _super.prototype[selectVirtualRow].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.refreshCell = function (rowObj) {\n rowObj.cells = this.generateCells();\n };\n VirtualTreeContentRenderer.prototype.generateCells = function () {\n var cells = [];\n for (var i = 0; i < this.parent.columns.length; i++) {\n cells.push(this.generateCell(this.parent.columns[i]));\n }\n return cells;\n };\n VirtualTreeContentRenderer.prototype.generateCell = function (col, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': col.visible,\n 'isDataCell': !isNullOrUndefined(col.field || col.template),\n 'isTemplate': !isNullOrUndefined(col.template),\n 'rowID': rowId,\n 'column': col,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': col.commands,\n 'isForeignKey': col.isForeignColumn && col.isForeignColumn(),\n 'foreignKeyData': col.isForeignColumn && col.isForeignColumn() && getValue(col.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n VirtualTreeContentRenderer.prototype.beginEdit = function (e) {\n var selector = '.e-row[aria-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[index];\n e.data = rowData;\n };\n VirtualTreeContentRenderer.prototype.beginAdd = function (args) {\n var addAction = 'addActionBegin';\n var isAdd = 'isAdd';\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, ariaRowIndex: this.ariaRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.ariaRowIndex = addArgs.ariaRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[isAdd]) {\n _super.prototype[resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, ariaRowIndex: this.ariaRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.ariaRowIndex = addArgs.ariaRowIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[preventEvent]) {\n _this.parent.showSpinner();\n }\n var xAxis = current.axis === 'X';\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0]\n - 1);\n if (xAxis) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n _this.virtualEle.adjustTable(x, _this.translateY);\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n var info = scrollArgs.sentinel;\n var outBuffer = this.parent.pageSettings.pageSize - Math.ceil(this.parent.pageSettings.pageSize / 2);\n var content = this.parent.getContent().querySelector('.e-content');\n var scrollHeight = outBuffer * this.parent.getRowHeight();\n var upScroll = (scrollArgs.offset.top - this.translateY) < 0;\n var downScroll = Math.ceil(scrollArgs.offset.top - this.translateY) >= scrollHeight;\n var selectedRowIndex = 'selectedRowIndex';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / this.parent.getRowHeight())\n + Math.ceil(vHeight / this.parent.getRowHeight()))\n - this.parent.pageSettings.pageSize;\n index = (index > 0) ? index : 0;\n if (!isNullOrUndefined(this[selectedRowIndex]) && this[selectedRowIndex] !== -1 && index !== this[selectedRowIndex]) {\n index = this[selectedRowIndex];\n }\n this.startIndex = index;\n this.endIndex = index + this.parent.pageSettings.pageSize;\n if (this.endIndex > this.totalRecords) {\n var lastInx = this.totalRecords - 1;\n var remains = this.endIndex % lastInx;\n this.endIndex = lastInx;\n this.startIndex = (this.startIndex - remains) < 0 ? 0 : (this.startIndex - remains);\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / this.parent.getRowHeight());\n rowPt = rowPt % this.parent.pageSettings.pageSize;\n var firsttdinx = 0;\n if (!isNullOrUndefined(this.parent.getRows()[rowPt]) &&\n !isNullOrUndefined(this.parent.getContent().querySelectorAll('.e-content tr')[rowPt])) {\n var attr = this.parent.getContent().querySelectorAll('.e-content tr')[rowPt]\n .querySelector('td').getAttribute('index');\n firsttdinx = +attr; // this.parent.getContent().querySelector('.e-content tr').getAttribute('aria-rowindex');\n }\n if (firsttdinx === 0) {\n this.translateY = scrollArgs.offset.top;\n }\n else {\n var height = this.parent.getRowHeight();\n this.translateY = (scrollArgs.offset.top - (outBuffer * height) > 0) ?\n scrollArgs.offset.top - (outBuffer * height) + 10 : 0;\n }\n }\n else if (downScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var isLastBlock = (this[selectedRowIndex] + this.parent.pageSettings.pageSize) < this.totalRecords ? false : true;\n if (!isNullOrUndefined(this[selectedRowIndex]) && this[selectedRowIndex] !== -1 &&\n nextSetResIndex !== this[selectedRowIndex] && !isLastBlock) {\n nextSetResIndex = this[selectedRowIndex];\n }\n var lastIndex = nextSetResIndex + this.parent.pageSettings.pageSize;\n if (lastIndex > this.totalRecords) {\n lastIndex = nextSetResIndex +\n (this.totalRecords - nextSetResIndex);\n }\n this.startIndex = !isLastBlock ? lastIndex - this.parent.pageSettings.pageSize : nextSetResIndex;\n this.endIndex = lastIndex;\n if (scrollArgs.offset.top > (this.parent.getRowHeight() * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (this.parent.getRowHeight() * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left')) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.ariaRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[restoreAdd].call(this);\n _super.prototype[ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback) {\n var containerRect = 'containerRect';\n _super.prototype[containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback), this);\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this[options].prevTop = this[options].prevLeft = 0;\n return function (e) {\n var top = _this[options].movableContainer ? _this[options].container.scrollTop : e.target.scrollTop;\n var left = _this[options].movableContainer ? _this[options].scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this[options].prevTop < top ? 'down' : 'up';\n direction = _this[options].prevLeft === left ? direction : _this[options].prevLeft < left ? 'right' : 'left';\n _this[options].prevTop = top;\n _this[options].prevLeft = left;\n var current = _this.sentinelInfo[direction];\n var delta = 0;\n _this.newPos = top;\n if (_this.lastPos != null) { // && newPos < maxScroll\n delta = _this.newPos - _this.lastPos;\n }\n _this.lastPos = _this.newPos;\n if (_this.timer) {\n clearTimeout(_this.timer);\n }\n _this.timer = setTimeout(_this.clear, 0);\n if ((delta > 100 || delta < -100) && (e && e.preventDefault)) {\n e.returnValue = false;\n e.preventDefault();\n }\n if (_this[options].axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered && current.axis === 'X') {\n if (_this[movableEle] && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this[movableEle], current, direction, { top: top, left: left }, _this[fromWheel], check);\n }\n else {\n onEnterCallback(_this[element], current, direction, { top: top, left: left }, _this[fromWheel], check);\n }\n }\n if (check) {\n var fn = debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n }\n _this[fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n this.parent.grid.clearSelection();\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length)) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n //renderer.addRenderer(RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this)));\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parentGrid.height :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\n","import { parentsUntil } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getMovableDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getFrozenRightRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var rData = this.parent.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n rows[i].style.display = args.action;\n if (freeze) {\n frozenRightRows[i].style.display = args.action;\n }\n var queryselector = args.action === 'none' ? '.e-treecolumn-container .e-treegridcollapse'\n : '.e-treecolumn-container .e-treegridexpand';\n if (frozenrows[rows[i].rowIndex].querySelector(queryselector)) {\n var cRow = [];\n for (var i_1 = 0; i_1 < movableRows.length; i_1++) {\n if (movableRows[i_1].querySelector('.e-gridrowindex' + rData.index + 'level' + (rData.level + 1))) {\n cRow.push(movableRows[i_1]);\n }\n }\n if (cRow.length) {\n this.rowExpandCollapse({ detailrows: cRow, action: args.action });\n }\n }\n }\n };\n Freeze.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, 'e-rowcell') &&\n this.parent.grid.editSettings.allowEditOnDblClick && this.parent.editSettings.mode !== 'Cell') {\n this.parent.grid.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Grid, ColumnChooser as GridColumnChooser } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnChooser module\n *\n * @hidden\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance.\n */\n function ColumnChooser(parent) {\n Grid.Inject(GridColumnChooser);\n this.parent = parent;\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @returns {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n return this.parent.grid.columnChooserModule.openColumnChooser(X, Y);\n };\n /**\n * Destroys the openColumnChooser.\n *\n * @function destroy\n * @returns {void}\n */\n ColumnChooser.prototype.destroy = function () {\n //this.parent.grid.ColumnChooserModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnChooser module name\n */\n ColumnChooser.prototype.getModuleName = function () {\n return 'ColumnChooser';\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { Grid, InfiniteScroll as GridInfiniteScroll } from '@syncfusion/ej2-grids';\nimport { RowRenderer, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { findChildrenRecords } 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 };\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 };\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 /**\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 dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var visualData = dm.executeLocal(new Query().where(expanded));\n var actionArgs = getValue('actionArgs', pageingDetails.actionArgs);\n var actions = getValue('actions', this.parent.grid.infiniteScrollModule);\n var initial = actions.some(function (value) { return value === actionArgs.requestType; });\n var initialRender = initial ? true : this.parent.initialRender ? true : false;\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n if (getValue('isPrinting', pageingDetails.actionArgs)) {\n pageingDetails.result = visualData;\n }\n else {\n var query = new Query();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var size = initialRender ?\n this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :\n this.parent.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (!isNullOrUndefined(actionArgs)) {\n var lastIndex = getValue('lastIndex', this.parent.grid.infiniteScrollModule);\n var firstIndex = getValue('firstIndex', this.parent.grid.infiniteScrollModule);\n if (!isCache && actionArgs.requestType === 'delete') {\n var skip = lastIndex - actionArgs.data.length + 1;\n var take = actionArgs.data.length;\n query = query.skip(skip).take(take);\n }\n else if (isCache && actionArgs.requestType === 'delete' ||\n (actionArgs.requestType === 'save' && actionArgs.action === 'add')) {\n query = query.skip(firstIndex);\n query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n query = query.page(current, size);\n }\n }\n else {\n query = query.page(current, size);\n }\n dm.dataSource.json = visualData;\n if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n pageingDetails.result = [actionArgs.data];\n }\n else {\n pageingDetails.result = dm.executeLocal(query);\n }\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * Handles the currentviewdata for delete operation.\n *\n * @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details\n * @param {InfiniteScrollArgs} args.e - scroller details while CRUD\n * @param {Object[]} args.result - data details while CRUD\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n var infiniteData = 'infiniteCurrentViewData';\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n var keys = Object.keys(infiniteCurrentViewData);\n if (args.e.requestType === 'delete' && args.result.length > 1) {\n for (var i = 1; i < args.result.length; i++) {\n infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[i]);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {ActionEventArgs} args - crud action details\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteDeleteHandler = function (args) {\n if (args.requestType === 'delete') {\n var rows = this.parent.grid.getRowsObject();\n var rowElms = this.parent.getRows();\n var data = args.data instanceof Array ? args.data : [args.data];\n var keyField = this.parent.grid.getPrimaryKeyFieldNames()[0];\n this.removeRows(rowElms, rows, data, keyField, true);\n if (this.parent.getFrozenColumns() > 0) {\n var mRows = this.parent.grid.getMovableRowsObject();\n var mRowElms = this.parent.grid.getMovableRows();\n this.removeRows(mRowElms, mRows, data, keyField);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {Element[]} rowElms - row elements\n * @param {Row<Column>[]} rows - Row object collection\n * @param {Object[]} data - data collection\n * @param {string} keyField - primary key name\n * @param { boolean} isFrozen - Specifies whether frozen column enabled\n * @returns {void}\n */\n InfiniteScroll.prototype.removeRows = function (rowElms, rows, data, keyField, isFrozen) {\n var _this = this;\n var resetInfiniteCurrentViewData = 'resetInfiniteCurrentViewData';\n var _loop_1 = function (i) {\n rows.filter(function (e, index) {\n if (e.data[keyField] === data[i][keyField]) {\n if (isFrozen) {\n var page = Math.ceil((index + 1) / _this.parent.grid.pageSettings.pageSize);\n _this.parent.grid.infiniteScrollModule[resetInfiniteCurrentViewData](page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[index]);\n rowElms.splice(index, 1);\n }\n });\n };\n for (var i = 0; i < data.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * Handles the row objects for Add operation.\n */\n InfiniteScroll.prototype.createRows = function (eventArgs) {\n var locator = 'serviceLocator';\n var actionArgs = eventArgs.args.e;\n var row = eventArgs.row;\n var serviceLocator = this.parent.grid.infiniteScrollModule[locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var tbody;\n var currentData = this.parent.getCurrentViewRecords();\n var currentRows = eventArgs.isMovable ? this.parent.grid.getMovableRows()\n : this.parent.grid.getDataRows();\n if (eventArgs.isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector('tbody');\n }\n else {\n tbody = !this.parent.grid.isFrozenGrid() ? this.parent.getContent().querySelector('tbody') : eventArgs.isMovable\n ? this.parent.grid.getMovableVirtualContent().querySelector('tbody')\n : this.parent.grid.getFrozenVirtualContent().querySelector('tbody');\n }\n if (this.parent.frozenRows) {\n tbody = eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType !== 'add'\n || !eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType === 'add'\n ? !this.parent.grid.isFrozenGrid() ? this.parent.getHeaderContent().querySelector('tbody')\n : eventArgs.isMovable ? this.parent.grid.getMovableVirtualHeader().querySelector('tbody')\n : eventArgs.isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector('tbody')\n : this.parent.grid.getFrozenVirtualHeader().querySelector('tbody') : tbody;\n }\n var position;\n var addRowIndex = 'addRowIndex';\n var newRowIndex = this.parent.editModule[addRowIndex];\n for (var i = 0; i < row.length; i++) {\n var newRow = rowRenderer.render(row[i], this.parent.grid.getColumns());\n if (actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n if (getValue('selectedIndex', this.parent.editModule) !== -1 && this.parent.editSettings.newRowPosition !== 'Top') {\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n newRowIndex += findChildrenRecords(currentData[newRowIndex + 1]).length;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n newRowIndex -= 1; //// for child position already child record is added in childRecords so subtracting 1\n }\n currentRows[newRowIndex][position](newRow);\n }\n else if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n currentRows[this.parent.editModule[addRowIndex]][position](newRow);\n }\n }\n else if (this.parent.editSettings.newRowPosition === 'Bottom') {\n tbody.appendChild(newRow);\n }\n else {\n tbody.insertBefore(newRow, tbody.firstElementChild);\n }\n }\n else if (actionArgs.requestType === 'delete') {\n tbody.appendChild(newRow);\n }\n }\n eventArgs.cancel = true;\n };\n /**\n * To destroy the infiniteScroll module\n *\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n"],"names":["isRemoteData","parent","dataSource","DataManager","adaptor","ODataAdaptor","WebApiAdaptor","WebMethodAdaptor","CacheAdaptor","UrlAdaptor","isCountRequired","isCheckboxcolumn","i","columns","length","showCheckbox","isFilterChildHierarchy","isNullOrUndefined","grid","searchSettings","key","hierarchyMode","allowFiltering","filterSettings","findParentRecords","records","datas","len","Object","keys","getObject","push","getExpandStatus","record","parents","childParent","parentRecord","parentItem","getParentData","uniqueID","initialRender","expandStateMapping","expanded","findChildrenRecords","hasChildRecords","childRecords","concat","isOffline","dm","ready","extendArray","array","obj","objArr","j","getPlainData","value","index","level","taskData","requireFilter","isHidden","el","style","window","getComputedStyle","display","visibility","editAction","details","control","isSelfReference","addRowIndex","selectedIndex","columnName","addRowRecord","batchChanges","action","getPrimaryKeyFieldNames","treeData","json","modifiedData","originalData","isSkip","editSettings","mode","editModule","getBatchChanges","addAct","currentViewRecords","getCurrentViewRecords","extend","newRowPosition","unshift","primaryKeys","currentdata","addAction","Array","k","_loop_1","prototype","hasOwnProperty","call","editedData","parentIdMapping","idMapping","splice","childMapping","updateParentRow","currentData_1","parentData","flatData","filter","e","p","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","child","index_1","currentRecords","map","enableVirtualization","getValue","parentUniqueID","sortSettings","indexOf","data","setRowData","row","getRowByIndex","getRows","getRowIndexByPrimaryKey","movableRow","frozenRows","getFrozenColumns","getMovableRowByIndex","index_2","treeColumnIndex","allowRowDragAndDrop","enableImmutableMode","renderModule","cellRender","cell","cells","column","getColumns","requestType","Column","options","this","allowEditing","edit","disableHtmlEncode","allowReordering","showColumnMenu","allowSorting","allowResizing","merge","setProperties","clipboardModule","uid","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Predicate","_super","apply","Property","ChildProperty","FilterSettings","Collection","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","Grid","Inject","GridLogger","getModuleName","log","types","args","type","item","detailLists","cOp","check","success","message","generateMessage","replace","gridurl","substring","treeGridObj","dataStateChange","console","logType","treeLog","treeGrid","isPrimaryKey","treeGridDetails","mapping_fields_missing","opt","ERROR","rowDataBound","queryCellInfo","beforeDataBound","actionBegin","actionComplete","rowSelected","checkboxChange","rowDeselected","toolbarClick","beforeExcelExport","beforePdfExport","collapsed","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","crudAction","beginEdit","beginAdd","recordDoubleClick","cellSave","cellSaved","cellEdit","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","keyPressed","doubleTap","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","detailDataBound","rowDragStartHelper","rowsAdd","rowsRemove","rowdraging","rowDropped","TreeClipboard","_this","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getSelection","toString","clipBoardTextArea","rows","selectionSettings","selectedIndexes","getSelectedRowIndexes","sort","a","classList","contains","slice","querySelectorAll","uniqueid","getSelectedRecords","copyHierarchyMode","parentContentData","childContentData","headerTextArray","getVisibleColumns","headerText","cancel","trigger","Browser","userAgent","match","setSelectionRange","select","treeLevel","copy","paste","rowIndex","colIndex","destroy","childData","GridClipboard","Selection","selectedItems","filteredList","addEventListener","on","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","removeEventListener","isDestroyed","off","checkBox","checkWrap","parentsUntil","querySelector","closest","selectCheckboxes","triggerChkChangeEvent","nextElementSibling","autoCheckHierarchy","checkBoxvalue","headerSelection","checkState","rowElement","checked","rowData","getCheckedRecords","events.checkboxChange","getCheckboxcolumnIndex","mappingUid","columnIndex","col","headerCelllength","getHeaderContent","getAttribute","headerElement","rowChkBox","createElement","className","attrs","createCheckBox","label","add","insertBefore","cloneNode","firstChild","renderColumnCheckbox","setAttribute","checkboxState","allowTextWrap","width","checkbox","removeClass","container","containerELe","spanEle","innerHTML","divEle","appendChild","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","count","isSummaryRow","indeter","checkChildRecords","checkBoxRecord","checkAll","filterResult","rec","currentRecord","checkedRecord","recordIndex","checkboxRecord","tr","movableTr","getMovableDataRows","checkedIndex","checkBoxclass","childLength","updatedData","forEach","getCheckedrecords","getCheckedRowIndexes","Print","GridPrint","events.printGridInit","printTreeGrid","printGrid","gridElement","events.queryCellInfo","events.rowDataBound","events.beforeDataBound","addClass","print","SearchSettings","SelectionSettings","Render","templateResult","columnTemplateResult","reactTemplateRender","RowModifier","allowPaging","pageSettings","pageSizeMode","enableCollapseAll","proxy_1","parentrec","cellElement","pad","filterLevel","totalIconsWidth","getColumnByUid","summaryRow","frozenColumns","enableColumnVirtualization","getColumnIndexByUid","emptyExpandIcon","styles","n","iconRequired","hasFilteredChildRecords","expandIcon","expand","updateTreeCell","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","field","notify","checkboxElement","parseInt","summaryData","rowTemplate","treeColumn","templateFn","colindex","template","templateCompiler","textContent","appendChildren","children","tempID","element","id","portals","isReact","result","DataManipulation","addedRecords","parentItems","taskIds","hierarchyData","storedIndex","sortedData","isSortAction","dataResults","updateParentRemoteData","beginSorting","updateData","events.remoteExpand","collectExpandingRecs","dataProcessor","isRemote","convertToFlatData","query","Query","filterKey","params","param","where","addParams","hasChildMapping","qry","clone","queries","executeQuery","then","DataUtil","distinct","httpRequest","statusText","setValue","zerothLevelData","dataManagerSuccess","hideSpinner","convertJSONData","tempData","selfData","mappingData","executeLocal","group","groupData","items","selfReferenceUpdate","createRecords","referenceData","shift","loadChildOnDemand","getUid","Math","ceil","random","rowDetails","isChild","gridRows","getContentTable","childRecord","targetEle","getElementsByClassName","getRowObjectFromUID","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","getDataModule","generateQuery","clonequries","fn","showSpinner","currentViewData","inx","getRowsObject","haveChild","events.actionComplete","aggregates","gridQuery","aggregateQuery","summaryQuery","q","summaryModule","calculateSummaryValue","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","enableInfiniteScrolling","events.expanded","contentModule","currentInfo","prevInfo","loadNext","currentPage","nextInfo","page","parentRecords","treeGridData","currentData","dataObj","isExport","expresults","exportType","isPrinting","actionArgs","actionData","actionAddArgs","primaryKeyColumnName","dataValue","isLocalData","updateAction","filterQuery","searchQuery","results","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","sortComparer","bind","direction","sortBy","sortArgs","temp","paging","printMode","actArgs","events.pagingActions","isCollapsedStatePersist","actualResults","dataResult","events.crudAction","events.batchSave","ToolbarItem","ContextMenuItems","PageSettings","AggregateColumn","intl","Internationalization","setFormatter","cultureName","format","skeleton","formatFn","getFormatFunction","getDateFormat","getNumberFormat","getFormatter","setTemplate","helper","undefined","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","objectEqualityChecker","old","current","isEqual","excludeKeys","Date","getTime","TreeGrid_1","TreeGridSelection","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","preRender","TreeGridLocale","initProperties","defaultLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","l10n","L10n","locale","sortByColumn","isMultiSort","sortModule","sortColumn","clearSorting","removeSortColumn","search","searchString","autoFitColumns","fieldNames","resizeModule","updateColumnModel","reorderColumns","fromFName","toFName","localeObject","gridLocale","treeGridLocale","load","printModule","treeGridkeyActionHandler","allowKeyboard","parentTarget","summaryElement","expandAll","collapseAll","expandCollapseRequest","parentElement","findnextRowElement","selectRow","cellIndex","row_1","clearSelection","findPreviousRowElement","rIndex","cIndex","summaryRowElement","previousElementSibling","columnModel","isExpandAll","isCollapseAll","keyConfigs","ctrlDownArrow","ctrlUpArrow","ctrlShiftUpArrow","ctrlShiftDownArrow","downArrow","upArrow","offline","RemoteSaveAdaptor","wireEvents","EventHandler","mouseClickHandler","keyboardModule","KeyboardEvents","keyAction","eventName","tabIndex","requiredModules","modules","getGridColumns","member","toolbar","contextMenuItems","allowExcelExport","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","renderComplete","destroyTemplateFn","clearTemplate","afterGridRender","griddata","bindGridProperties","bindedDataSource","enableRtl","columnQueryMode","getActualProperties","pagerTemplate","infiniteScrollSettings","enableAltRow","enableHover","enableAutoFill","enableAdaptiveUI","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","triggerEvents","bindGridEvents","rowSelecting","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","events.rowSelected","events.rowDeselected","resizeStop","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","rowDeselecting","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","resizeStart","resizing","columnDrag","columnDragStart","columnDrop","beforePrint","beforeCopy","beforePaste","TreeLogger","printComplete","actionFailure","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","dataBound","updateRowTemplate","updateAltRow","req","totalRows","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","events.actionBegin","updateTreeGridModel","events.beginAdd","ag","showChildSummary","refresh","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","events.rowdraging","rowDrop","events.rowDropped","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","tooltipText","Search","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","closeEdit","treeGridElement","hasTreeGridChild","removeListener","dataBind","document","getElementById","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","position","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","toolbarModule","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","goToPage","pageNo","pagerModule","updateExternalMessage","getCellFromIndex","getColumnByField","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","stackedHeader","refreshReactColumnTemplateByUid","columnUid","rowsObj","indent","getIndentCount","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","serviceLocator","td","refreshTD","getContent","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","getVisibleRecords","visibleRecords","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollHeight","scrollTop","getRowHeight","scrollBy","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","this_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","startIndex","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","sHeight","clientHeight","events.localPagedExpandCollapse","deff","data_1","length_1","rows_1","args_1","collapseRemoteChild","movableRows","freezeRightRows","rows_2","getMovableRows","getFrozenRightRows","visibleRowCount","gridRow","rcell","arg","movablerows","rightrows","collapsingTd","collapse","expandElement","cRow","eRows","i_1","updateResultModel","returnResult","filterByColumn","filterOperator","filterValue","predicate","matchCase","ignoreAccent","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","getSelectedRows","getMovableCellFromIndex","getFrozenRightRowByIndex","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","cnt","isFrozen","getSelectedRowCellIndexes","baseModule","treeModule","reorderRows","fromIndexes","toIndex","rowDragAndDropModule","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropPosition","dropIndex","dropRows","orderToIndex","dropData","totalRecord","parentrow","updatedParent","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","removeLastrowBorder","isEmptyRow","islastRowIndex","updateIcon","rowEle","rowPositionHeight","addErrorElem","rowTop","toolHeight","offsetHeight","positionOffSet","getOffset","contentHeight","top","offsetTop","divide","topRowSegment","middleRowSegment","bottomRowSegment","mouseEvent","touchEvent","posy","pageY","changedTouches","isTopSegment","isMiddleRowSegment","isBottomRowSegment","removeChildBorder","removetopOrBottomBorder","addFirstrowBorder","removeErrorElem","topOrBottomBorder","addRemoveClasses","addLastRowborder","borderElem","targetRow","node","div","gridheaderEle","toolbarHeight","getToolbar","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","content","parentNode","removeChild","spanContent","paddingLeft","errorelem","border","box","getBoundingClientRect","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","left","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","selectedRecord","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","_loop_2","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","i_2","i_3","draggedRecords","TreeVirtualRowModelGenerator","events.dataListener","getDatas","visualData","getDataInfo","getData","generateRows","virtualInfo","info","blockIndexes","getBlockIndexes","url","checkAndResetCache","clear","cache","groups","getBlockSize","VirtualRowModelGenerator","Filter","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parent_1","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","childRec","isExist","parent_2","parent_3","fLevel","ExcelExport","GridExcel","updateExcelResultModel","exportRowDataBound","finalPageSetup","isCsv","Promise","isLocal","event.beforeExcelExport","customData","manipulateExportProperties","book","dtSrc","queryResult","flatsData","dataSrc","excelRow","excelrowobj","rowObj","filtercolumnlength","Boolean","rowlength","excelRows","rowlevel","expandedStatus","sublevelState","state","grouping","outlineLevel","isCollapsed","worksheets","pageSetup","isSummaryRowBelow","PdfExport","GridPdf","updatePdfResultModel","event.beforePdfExport","customsData","manipulatePdfProperties","flatDatas","paragraphIndent","Page","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","ret","pageRoot","pagedResults","newResults","t","res","pageingDetails","propname","skip","size","pageSize","take","dm_1","or","parents_1","floor","Toolbar","tool","refreshToolbar","toolbarClickHandler","Aggregate","GridAggregate","flatChildRecords","isSort","flatRecords","summaryLength","dataLength","getChildRecordsLength","summaryRowIndex","len_1","createSummaryItem","idx_1","currentIndex","summaryParent","length_2","itemData","summary","displayColumn","keys_1","getSummaryValues","summaryColumn","single","getFormatFromType","tempObj","requiresCount","summaryKey","sumData","toLowerCase","calculateAggregate","disp","value_1","summaryformat","Sort","GridSort","flatSortedData","updateModel","createdSortedRecords","sortParams","iterateSort","childSort","ColumnMenu","GridColumnMenu","getColumnMenu","columnMenuModule","ContextMenu","cmenu","addRow","editRecord","BatchEdit","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","isAdd","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","actualCellIndex","frozenCols","columnObject","getColumnByIndex","added","primaryKey_1","currentDataIndex","indexvalue","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","changes","batchIndex","primaryParent","childRecordCount","updateChildCount","updateRowIndex","focusModule","table","matrix","childs","primarykey","parentRowIndex","getRowElementByUID","totalCount","selectedRecords","mRows","deleterecords","deleteUniqueID","positionIndex","updatedRecords","primarykey_1","addRecords","totalRecords","endIndex","indexValue","Edit","prevAriaRowIndex","isAddedRowByMethod","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","events.keyPressed","lastCellTab","contentready","editActionEvents","events.doubleTap","gridDblClick","customCellSave","savePreviousRowPosition","events.beforeStartEdit","events.beforeBatchCancel","resetIsOnBatch","getRowPosition","doubleClickTarget","addArgs","ariaRowIndex","applyFormValidation","eventArgs","treeObj","keyData","paramsLength","infiniteAddAction","rowObjects","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","getMovableRowsObject","isCache","enableCache","resetRowIndex","updateIndex","newRowIndex","dataIndex","infiniteCurrentViewData","infiniteScrollModule","isOnBatch","updateGridEditMode","keyPress","prom","celleditArgs","request","toolbarID","cellDetails","treeCell","afterCellSave","form","rowIndex_1","primaryKeys_1","isTabLastRow","update","fromTable","previousValue","editArgs","filterChoiceCount","excelSearchOperator","mRow","aggregateModule","destroyWidgets","formObj","restoreFocus","saveArgs","previousData","data1","treeColIndex","l","data2","treecell","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","focussedElement","activeElement","newFreezeRowObject","rightFrozenRows","errors","focus","primaryKeys_2","selector","beginAddEdit","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","editFormValidate","destroyForm","CommandColumn","Command","DetailRow","detailrow","dataBoundArg","detaildataBound","setIndentVisibility","childRowExpand","rowExpandCollapse","actioncomplete","detailele","elements","detailData","detailRowElement","detailElement","previousSibling","expandClass","classlist","gridClas","gridclass","newNo","detailClass","spann","updtdcolum","focusElement","VirtualTreeContentRenderer","locator","isExpandCollapse","translateY","maxiPage","recordAdded","preTranslate","isRemoteExpand","getModelGenerator","events.virtualActionArgs","virtualOtherAction","events.indexModifier","setTop","nextSetResIndex","lastIndex","onDataReady","refreshContentRows","observers","observes","scrollArgs","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","onActionComplete","virtualEditSuccess","resetIseditValue","cancelEdit","toSelectRowOnContextOpen","refreshCell","cellFocus","setVirtualHeight","contents","debounceEvent","TreeInterSectionObserver","getPanel","getTranslateY","sTop","cHeight","isOnenter","initialRowTop","gridTop","containerRect","observer","generateCells","generateCell","rowId","cellType","colSpan","oIndex","foreignKeyData","isDataCell","isTemplate","rowID","Data","isForeignKey","isForeignColumn","Cell","rowPosition","withInRange","restoreEditState","restoreNewRow","isWheel","isIE","xAxis","axis","getColumnOffset","vgenerator","getColumnIndexes","columnIndexes","cOffsets","maxLeft","virtualEle","adjustTable","header","sentinel","outBuffer","upScroll","offset","downScroll","vHeight","lastInx","remains","rowPt","firsttdinx","isLastBlock","viewInfo","previousInfo","setColumnIndexesInView","loadSelf","event","appendContent","newChild","sentinelInfo","cBlock","cOffset","setWrapperWidth","name","getTable","VirtualContentRenderer","isWheeling","newPos","lastPos","timer","callback","onEnterCallback","virtualScrollHandlers","delay","debounced50","debounce","prevTop","prevLeft","movableContainer","scrollbar","delta","clearTimeout","setTimeout","preventDefault","returnValue","axes","entered","InterSectionObserver","VirtualScroll","prevstartIndex","prevendIndex","TreeVirtual","returnVisualData","collapseExpandVirtualchilds","virtualPageAction","expandCollapseRec","counts","resourceCount","sIndex","instantiateRenderers","parentGrid","renderer","getService","RenderType","Header","VirtualHeaderRenderer","Content","ensurePageSize","GridVirtualScroll","Freeze","FreezeColumn","dblClickHandler","frozenRightRows","frozenrows","rData","queryselector","freezeModule","ColumnChooser","GridColumnChooser","X","Y","InfiniteScroll","GridInfiniteScroll","infinitePageAction","infiniteRemoteExpand","infiniteDeleteHandler","infiniteEditHandler","createRows","rowRenderer","RowRenderer","childRowObjects","childRowElements","initialBlocks","maxBlocks","firstIndex","rowElms","keyField","removeRows","mRowElms","tbody","currentRows","isMovable","isFrozenRight","isFrozenGrid","getMovableVirtualContent","getFrozenVirtualContent","isFrozenRows","getMovableVirtualHeader","getFrozenVirtualHeader","newRow"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-treegrid.umd.min.js","sources":["../src/treegrid/utils.js","../src/treegrid/actions/crud-actions.js","../src/treegrid/models/column.js","../src/treegrid/models/filter-settings.js","../src/treegrid/models/textwrap-settings.js","../src/treegrid/actions/logger.js","../src/treegrid/base/constant.js","../src/treegrid/actions/clipboard.js","../src/treegrid/actions/selection.js","../src/treegrid/actions/print.js","../src/treegrid/models/search-settings.js","../src/treegrid/models/selection-settings.js","../src/treegrid/renderer/render.js","../src/treegrid/base/data.js","../src/treegrid/enum.js","../src/treegrid/models/page-settings.js","../src/treegrid/models/summary.js","../src/treegrid/models/edit-settings.js","../src/treegrid/models/sort-settings.js","../src/treegrid/models/infinite-scroll-settings.js","../src/treegrid/base/treegrid.js","../src/treegrid/actions/reorder.js","../src/treegrid/actions/resize.js","../src/treegrid/actions/rowdragdrop.js","../src/treegrid/models/rowdrop-settings.js","../src/treegrid/renderer/virtual-row-model-generator.js","../src/treegrid/actions/filter.js","../src/treegrid/actions/excel-export.js","../src/treegrid/actions/pdf-export.js","../src/treegrid/actions/page.js","../src/treegrid/actions/toolbar.js","../src/treegrid/actions/summary.js","../src/treegrid/actions/sort.js","../src/treegrid/actions/column-menu.js","../src/treegrid/actions/context-menu.js","../src/treegrid/actions/batch-edit.js","../src/treegrid/actions/edit.js","../src/treegrid/actions/command-column.js","../src/treegrid/actions/detail-row.js","../src/treegrid/renderer/virtual-tree-content-render.js","../src/treegrid/actions/virtual-scroll.js","../src/treegrid/actions/freeze-column.js","../src/treegrid/actions/column-chooser.js","../src/treegrid/actions/infinite-scroll.js"],"sourcesContent":["import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[i].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[i]);\n if (hasChild) {\n datas.push(records[i]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords;\n for (var i = 0, len = Object.keys(childRecords).length; i < len; i++) {\n datas.push(childRecords[i]);\n if (childRecords[i].hasChildRecords || (!isNullOrUndefined(childRecords[i].childRecords) &&\n childRecords[i].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[i]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[i]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[j]] = array[i][keys[j]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[idFilter][value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[id][value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[k][key]) === 'object') {\n modifiedData[k] = modifiedData[k][key];\n }\n var keys = modifiedData[k].taskData ? Object.keys(modifiedData[k].taskData) :\n Object.keys(modifiedData[k]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[i][key] === modifiedData[k][key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[i];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[control.idMapping] === currentData_1[control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[p][control.idMapping] === currentData_1[control.idMapping]) {\n parentData['childRecords'].splice(p, 1);\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[i], keys[j]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[changedRecords].length === 0))\n || keys[j] === columnName)) {\n var editedData = getParentData(control, modifiedData[k].uniqueID);\n treeData[i][keys[j]] = modifiedData[k][keys[j]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[j]] = editedData[keys[j]] = treeData[i][keys[j]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[control.parentIdMapping] = treeData[i][control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[i], control.childMapping)) {\n treeData[i][control.childMapping] = [];\n }\n treeData[i][control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[i], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[i][control.childMapping])) {\n if (removeChildRecords(treeData[i][control.childMapping], modifiedData[k], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[i], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[addRowIndex];\n if (!isNullOrUndefined(currentdata) && currentdata[primaryKeys] === details.value[primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[j][key] === modifiedData[key] ||\n (isSelfReference && childRecords[j][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[j], keys[i]) && (control.editSettings.mode !== 'Cell' || keys[i] === columnName)) {\n editedData[keys[i]] = editedData.taskData[keys[i]] = childRecords[j][keys[i]] = modifiedData[keys[i]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[control.parentIdMapping] = childRecords[j][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[j], control.childMapping)) {\n childRecords[j][control.childMapping] = [];\n }\n childRecords[j][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[j][control.childMapping])) {\n if (removeChildRecords(childRecords[j][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[j], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[key] === record[key]) {\n index_1 = i;\n return;\n } });\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[index_1];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[key] !== child[key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[control.childMapping].indexOf(childRecords) === -1 && record[key] !== child[key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[i][primaryKeys] === record[primaryKeys]) {\n data[i] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[key])];\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getMovableRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[index_2] ? row.cells[index_2]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n }\n }\n}\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[i] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'][refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the textwrap behavior of the TreeGrid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[i]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[i] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[i] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[i] === 'primary_column_missing' || type[i] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[i] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[i] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[i] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[i] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[i] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[i]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent) {\n var _this = _super.call(this, parent.grid) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[i]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[i]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[i][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[i], rows, withHeader, i);\n }\n this[getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[i], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.treeGridParent.getVisibleColumns()[i].headerText;\n }\n this[getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this[copyContent] = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this[isSelect] = true;\n this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[selectedIndex][parentItem])) {\n var treeLevel = currentRecords[selectedIndex][parentItem][level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[selectedIndex][parentItem]) &&\n currentRecords[j][uniqueID] === currentRecords[selectedIndex][parentItem][uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[selectedIndex].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[j][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[selectedIndex][hasChildRecords]) {\n var childData = currentRecords[selectedIndex][childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[i][uniqueID]) && currentRecords[j][uniqueID] === childData[i][uniqueID]) {\n if ((!isNullOrUndefined(rows[j])) && !rows[j].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[j].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[j][uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[copyContent]);\n this[copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var columns = (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[col].showCheckbox) {\n mappingUid = this.parent.columns[col].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[j];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[i]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[j])) {\n flatRecord[keys[j]] = record[keys[j]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[count].isSummaryRow) {\n if (childRecords[count].hasChildRecords) {\n this.traverSelection(childRecords[count], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[count], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[i].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && indeter === 0) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length) {\n this.filteredList = [];\n }\n }\n var data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList :\n this.parent.flatData;\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[i].checkboxState === 'check') {\n continue;\n }\n data[i].checkboxState = 'check';\n this.updateSelectedItems(data[i], data[i].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[i]);\n if (index > -1) {\n data[i].checkboxState = 'uncheck';\n this.updateSelectedItems(data[i], data[i].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[i]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.getCurrentViewRecords().indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var checkbox;\n if (recordIndex > -1) {\n var tr = this.parent.getRows()[recordIndex];\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getMovableDataRows()[recordIndex];\n }\n checkbox = tr.querySelectorAll('.e-frame')[0] ? tr.querySelectorAll('.e-frame')[0]\n : movableTr.querySelectorAll('.e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && this.parent.enableVirtualization && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[i], childData[i].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[i]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[i], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[i].parentItem)) {\n this.updateParentSelection(updatedData[i].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.getCurrentViewRecords() : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[i].hasChildRecords) {\n _this.updateParentSelection(child[i]);\n }\n else if (!(child[i].hasChildRecords) && !isNullOrUndefined(child[i])) {\n _this.updateSelectedItems(child[i], child[i].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the filtering behavior of the TreeGrid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the selection behavior of the TreeGrid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed) {\n args.row.style.display = 'none';\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (<ITreeData>args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n this.parent.trigger(events.rowDataBound, args);\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n iconRequired = !(data.childRecords.length === 0);\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '7px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n if (isNullOrUndefined(this.parent.rowTemplate)) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('aria-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n args.column.template = treeColumn.template;\n args.column[templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[templateFn](args.data, this.parent, 'template', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[portals])) {\n this.parent.grid[portals] = this.parent[portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[i]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n Render.prototype.reactTemplateRender = function (args) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[portals]);\n this.parent[renderReactTemplates]();\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = <DataManager>this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req = getObject('dataSource.requests', _this.parent).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n for (var i = 0; i < Object.keys(data).length; i++) {\n var tempData = data[i];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[i];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[index][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var records = args.result;\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n for (var rec = 0; rec < records.length; rec++) {\n if (isCountRequired(this.parent) && records[rec].hasChildRecords && this.parent.initialRender) {\n records[rec].expanded = false;\n }\n if (isNullOrUndefined(records[rec].index)) {\n records[rec].taskData = extend({}, records[rec]);\n records[rec].uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[rec].uniqueID, records[rec], this.parent);\n records[rec].level = 0;\n records[rec].index = Math.ceil(Math.random() * 1000);\n if ((records[rec][this.parent.hasChildMapping] ||\n this.parentItems.indexOf(records[rec][this.parent.idMapping]) !== -1)) {\n records[rec].hasChildRecords = true;\n }\n records[rec].checkboxState = 'uncheck';\n }\n }\n }\n else {\n if (!isNullOrUndefined(records)) {\n this.convertToFlatData(records);\n }\n }\n }\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[i].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[i].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ? this.parent.grid.getCurrentViewRecords()[rowDetails.rows[i].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[i].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var datas = _this.parent.grid.currentViewData.slice();\n var inx = datas.indexOf(rowDetails.record);\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n rowDetails.record.childRecords = result;\n for (var r = 0; r < result.length; r++) {\n result[r].taskData = extend({}, result[r]);\n result[r].level = rowDetails.record.level + 1;\n result[r].index = Math.ceil(Math.random() * 1000);\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[r].parentItem = parentData;\n result[r].parentUniqueID = rowDetails.record.uniqueID;\n result[r].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[r].checkboxState = 'uncheck';\n setValue('uniqueIDCollection.' + result[r].uniqueID, result[r], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[r][_this.parent.hasChildMapping] || _this.parentItems.indexOf(result[r][_this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[r])) {\n result[r].hasChildRecords = true;\n result[r].expanded = false;\n }\n datas.splice(inx + r + 1, 0, result[r]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[result_1], true);\n }\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n for (var i = 0, len = Object.keys(data).length; i < len; i++) {\n var currentData = extend({}, data[i]);\n currentData.taskData = data[i];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping]) ||\n (currentData[this.parent.hasChildMapping] && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n if (isNullOrUndefined(currentData[this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[primaryKeyColumnName])) {\n actionAddArgs.data[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n dataValue.taskData[primaryKeyColumnName] = args.result[actionAddArgs.index][primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[getColumnByField](this.parent.grid.\n sortSettings.columns[srt].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[srt].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[srt].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[isPdfExport] && (isNullOrUndefined(args[isCollapsedStatePersist])\n || args[isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[i], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[i]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the TreeGrid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property } from '@syncfusion/ej2-base';\n/**\n * Configures the edit behavior of the TreeGrid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Collection } from '@syncfusion/ej2-base';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the infinite scroll behavior of Tree Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, addClass, createElement, EventHandler, isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { CellRenderer } from '@syncfusion/ej2-grids';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\n/**\n * Represents the TreeGrid component.\n * ```html\n * <div id='treegrid'></div>\n * <script>\n * var treegridObj = new TreeGrid({ allowPaging: true });\n * treegridObj.appendTo('#treegrid');\n * </script>\n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== current[keys[i]] && excludeKeys.indexOf(keys[i]) === -1) {\n var isDate = old[keys[i]] instanceof Date && current[keys[i]] instanceof Date;\n if (!isDate || (old[keys[i]].getTime() !== current[keys[i]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise<any>} - Returns promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n TreeGrid.prototype.sortByColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Searches TreeGrid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n row = column.closest('tr');\n if (row !== null && row !== undefined) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n row = column.closest('tr');\n if (row !== null && row !== undefined) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var rowIndex = summaryElement.rowIndex;\n this.selectRow(rowIndex);\n var cellIndex = e.target.cellIndex;\n var row_1 = summaryElement.children[cellIndex];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n parentTarget = e.target.parentElement;\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var rIndex = summaryElement.rowIndex;\n this.selectRow(rIndex);\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[cIndex];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[splitFrozenCount](this.getGridColumns(this.columns));\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings]\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this]\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this]\n });\n }\n modules.push({\n member: 'resize', args: [this]\n });\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this]\n });\n }\n if (this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount()) {\n modules.push({\n member: 'freeze', args: [this]\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this]\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this]\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this]\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[i].member === 'virtualscroll') {\n modules[i].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n this.grid.appendTo(gridContainer);\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[templateInstance] = this[templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[isJsComponent] = true;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))) {\n args.cancel = true;\n return;\n }\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[i].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[updateRowSelection](_this.getRows()[i], _this.getCurrentViewRecords()[i].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.rowDeselecting = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[rowIndex]].classList.contains('e-summaryrow')) {\n args[rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[j]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[j]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = getObject('dataSource.requests', _this).filter(function (e) {\n return e.httpRequest.statusText !== 'OK';\n }).length;\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[i])) {\n if (totalRows[i].nextElementSibling) {\n _this.lastRowBorder(totalRows[i], true);\n }\n break;\n }\n }\n }\n var action = 'action';\n if (_this.enableVirtualization && _this.selectionSettings.persistSelection && (_this.dataResults[action] === 'expand' || _this.dataResults[action] === 'collapse')) {\n var refreshPersistSelection = 'refreshPersistSelection';\n _this.grid.selectionModule[refreshPersistSelection]();\n if (_this.grid.selectionSettings.type === 'Single') {\n var updateRowSelection = 'updateRowSelection';\n var index = _this.getCurrentViewRecords().indexOf(_this.grid.selectionModule['data']);\n _this.grid.selectionModule[updateRowSelection](_this.getRows()[index], index);\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n this.treeColumnRowTemplate();\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[dataSource].json = extendArray(this.dataSource[dataSource].json);\n this.grid.dataSource[ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[ready])) {\n this.grid.dataSource[ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[dataSource].offline = true;\n dm[isDataAvailable] = true;\n dm[dataSource].json = e.result;\n dm[adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 || _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise.resolve(actionArgs);\n });\n return callBackPromise;\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 _this.trigger(events.actionComplete, args);\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (<DataManager>this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[i]) === -1) {\n this.columns.push(keys[i]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[guid] = this.editSettings[guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[i]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n default:\n items.push(this.contextMenuItems[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[i]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[i]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n index = index === 0 ? -1 : index;\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[i].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[i] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[i];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[prop] = column[i][prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[i][prop])) {\n gridColumn[prop] = this.getGridColumns(column[i][prop], false, index);\n treeGridColumn[prop] = column[i][prop];\n }\n else {\n gridColumn[prop] = treeGridColumn[prop] = column[i][prop];\n }\n }\n }\n if (!treeGridColumn[stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'columns':\n this.grid.columns = this.getGridColumns(this.columns);\n break;\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[prop].mode &&\n (newProp[prop].mode === 'Cell' || newProp[prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[i]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[k];\n delete currentObject[objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n this.ignoreInArrays(ignoreOnColumn, columns[i].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[i]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[i]];\n column.filter = {};\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added.\n * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[index];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldName - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[rowIndex];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[columnModel], function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var stackedHeader = false;\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[i]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[prop] = gridColumns[i][prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[i].field && this.columnModel[i].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[i].template = temp;\n }\n }\n }\n var merge = 'deepMerge';\n this[merge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n stackedHeader = true;\n }\n if (!stackedHeader) {\n this.setProperties({ columns: this.columnModel }, true);\n }\n this[merge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.grid.getRowsObject();\n var indent = _this.grid.getIndentCount();\n var cellIndex = _this.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this.grid, _this.grid.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[i].classList.contains('e-summaryrow')) {\n dRows.push(rows[i]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n return this.grid.currentViewData;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ? this.flatData :\n new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[i]);\n if (!currentViewRecords[i].expanded) {\n i += findChildrenRecords(currentViewRecords[i]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if (this.getBatchChanges()[this.changedRecords].length ||\n this.getBatchChanges()[this.deletedRecords].length || this.getBatchChanges()[this.addedRecords].length) {\n var dialogObj = this.grid.editModule[obj];\n this.grid.editModule[showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo = this.grid.getRowInfo(target);\n var record = rowInfo.rowData;\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo.row, record);\n }\n else {\n this.expandRow(rowInfo.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n _this.expandCollapse('expand', row, record);\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n var children = 'Children';\n if (!(isRemoteData(_this) && !isOffline(_this)) && (!isCountRequired(_this) || !isNullOrUndefined(record[children]))) {\n var collapseArgs = { data: record, row: row };\n _this.setHeightForFrozenContent();\n _this.trigger(events.expanded, collapseArgs);\n }\n }\n });\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[i]);\n }\n };\n TreeGrid.prototype.setHeightForFrozenContent = function () {\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.grid.getFrozenColumns() > 0 || freeze) {\n this.grid.contentModule.refreshScrollOffset();\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n if (this.detailTemplate) {\n record = this.grid.getCurrentViewRecords()[row.getAttribute('aria-rowindex')];\n }\n else {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n record = this.getCollapseExpandRecords(row, record);\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(_this)) {\n _this.setHeightForFrozenContent();\n _this.trigger(events.collapsed, collapseArgs);\n if (_this.enableInfiniteScrolling) {\n var scrollHeight = _this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = _this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < _this.grid.getRowHeight() + +_this.height) {\n _this.grid.getContent().firstElementChild.scrollBy(0, _this.grid.getRowHeight());\n }\n }\n }\n }\n });\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[i].parentItem)) {\n var puniqueID_1 = record[i].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[i], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[i], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n if (!rows.length && this.getRows().length) {\n rows.push(this.getRows()[0]);\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n if (action === 'collapse') {\n this.collapseRow(rows[0]);\n }\n else {\n this.expandRow(rows[0]);\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[i]);\n }\n else {\n this.expandRow(rows[i]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if (!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.getCurrentViewRecords().indexOf(record);\n row = gridRows[rowIndex];\n }\n else {\n rowIndex = +row.getAttribute('aria-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[i])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[i], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[i].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[i]) {\n childData[i].level = record.level + 1;\n childData[i].index = Math.ceil(Math.random() * 1000);\n childData[i].parentItem = extend({}, record);\n childData[i].taskData = extend({}, childData[i]);\n delete childData[i].parentItem.childRecords;\n delete childData[i].taskData.parentItem;\n childData[i].parentUniqueID = record.uniqueID;\n childData[i].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[i].uniqueID, childData[i], _this);\n if (!isNullOrUndefined(childData[i][_this.childMapping]) ||\n (childData[i][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[i].hasChildRecords = true;\n }\n currentData.splice(index + 1 + i, record[_this.childMapping] && record[_this.childMapping][i] ? 1 : 0, childData[i]);\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[index][_this.childMapping] = childData;\n currentData[index].childRecords = childData;\n currentData[index].expanded = true;\n setValue('uniqueIDCollection.' + currentData[index].uniqueID, currentData[index], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[j]);\n }\n }\n _this.isExpandRefresh = true;\n _this.grid.refresh();\n _this.setHeightForFrozenContent();\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.setHeightForFrozenContent();\n this.trigger(events.expanded, args_1);\n }\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.setHeightForFrozenContent();\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.getCurrentViewRecords().filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[i][primaryKeyField]);\n rows.push(this.getRows()[rowIndex]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[i])) {\n rows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[i].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[i].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[i] });\n if (!isNullOrUndefined(childRecords[i].childRecords) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[i].expanded) || childRecords[i].expanded)) {\n this.expandCollapse(action, rows[i], childRecords[i], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[i], childRecords[i], true);\n }\n }\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[i];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[i].cells[this.treeColumnIndex];\n var row = rows[i];\n var rowData = this.grid.getRowsObject()[i].data;\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getMovableRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getFrozenRightRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[i].style.display = 'none';\n row = rows[i];\n var collapsingTd = rows[i].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[i].style.display = 'none';\n rightrows[i].style.display = 'none';\n if (!rows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[i];\n }\n else if (rightrows[i].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[i];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[i].rowIndex] :\n this.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[i_1].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[i_1]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, true);\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} - Returns movable cell element from the indexes passed\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getMovableDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getMovableRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getMovableRows();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getFrozenRightRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getFrozenRightRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getFrozenRightDataRows();\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenLeftColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getFrozenRightColumnHeaderByIndex(index);\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getMovableColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[j].columns) {\n cnt = this.getFrozenCount(cols[j].columns, cnt);\n }\n else {\n if (cols[j].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { getObject, Grid, Reorder as GridReorder } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Reorder module\n *\n * @hidden\n */\nvar Reorder = /** @class */ (function () {\n /**\n * Constructor for Reorder module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Reorder(parent) {\n Grid.Inject(GridReorder);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Reorder module name\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Reorder.prototype.addEventListener = function () {\n this.parent.on('getColumnIndex', this.getTreeColumn, this);\n };\n Reorder.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('getColumnIndex', this.getTreeColumn);\n };\n /**\n * To destroy the Reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n this.removeEventListener();\n };\n Reorder.prototype.getTreeColumn = function () {\n var columnModel = 'columnModel';\n var treeColumn = this.parent[columnModel][this.parent.treeColumnIndex];\n var treeIndex;\n var updatedCols = this.parent.getColumns();\n for (var f = 0; f < updatedCols.length; f++) {\n var treeColumnfield = getObject('field', treeColumn);\n var parentColumnfield = getObject('field', updatedCols[f]);\n if (treeColumnfield === parentColumnfield) {\n treeIndex = f;\n break;\n }\n }\n this.parent.setProperties({ treeColumnIndex: treeIndex }, true);\n };\n return Reorder;\n}());\nexport { Reorder };\n","import { Grid, Resize as GridResize } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Resize module\n *\n * @hidden\n */\nvar Resize = /** @class */ (function () {\n /**\n * Constructor for Resize module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Resize(parent) {\n Grid.Inject(GridResize);\n this.parent = parent;\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n this.parent.grid.autoFitColumns(fName);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Resize module name\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n /**\n * Destroys the Resize.\n *\n * @function destroy\n * @returns {void}\n */\n Resize.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.grid.resizeModule.destroy();\n };\n return Resize;\n}());\nexport { Resize };\n","import { Grid, RowDD as GridDragDrop, parentsUntil } from '@syncfusion/ej2-grids';\nimport { getObject, Scroll } from '@syncfusion/ej2-grids';\nimport { closest, isNullOrUndefined, classList, setValue, extend, getValue, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { editAction } from './crud-actions';\nimport { getParentData, findChildrenRecords, isRemoteData, isOffline, isCountRequired } from '../utils';\n/**\n * TreeGrid RowDragAndDrop module\n *\n * @hidden\n */\nvar RowDD = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function RowDD(parent) {\n /** @hidden */\n this.canDrop = true;\n /** @hidden */\n this.isDraggedWithChild = false;\n /** @hidden */\n this.isaddtoBottom = false;\n Grid.Inject(GridDragDrop);\n this.parent = parent;\n this.addEventListener();\n }\n RowDD.prototype.getChildrecordsByParentID = function (id) {\n var treeGridDataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridDataSource = this.parent.grid.dataSource.dataSource.json;\n }\n else {\n treeGridDataSource = this.parent.grid.dataSource;\n }\n var record = treeGridDataSource.filter(function (e) {\n return e.uniqueID === id;\n });\n return record;\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.addEventListener = function () {\n this.parent.on(events.rowdraging, this.Rowdraging, this);\n this.parent.on(events.rowDropped, this.rowDropped, this);\n this.parent.on(events.rowsAdd, this.rowsAdded, this);\n this.parent.on(events.rowsRemove, this.rowsRemoved, this);\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @returns {void}\n * @param {number[]} fromIndexes - source indexes of rows to be re-ordered\n * @param {number} toIndex - Destination row index\n * @param {string} position - Drop position as above or below or child\n */\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n var tObj = this.parent;\n if (fromIndexes[0] !== toIndex && ['above', 'below', 'child'].indexOf(position) !== -1) {\n if (position === 'above') {\n this.dropPosition = 'topSegment';\n }\n if (position === 'below') {\n this.dropPosition = 'bottomSegment';\n }\n if (position === 'child') {\n this.dropPosition = 'middleSegment';\n }\n var data = [];\n for (var i = 0; i < fromIndexes.length; i++) {\n data[i] = this.parent.getCurrentViewRecords()[fromIndexes[i]];\n }\n var isByMethod = true;\n var args = {\n data: data,\n dropIndex: toIndex\n };\n if (!isCountRequired(this.parent)) {\n this.dropRows(args, isByMethod);\n }\n //this.refreshGridDataSource();\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n this.parent.grid.refresh();\n if (this.parent.enableImmutableMode && this.dropPosition === 'middleSegment') {\n var index = this.parent.treeColumnIndex + 1;\n var row = this.parent.getRows()[fromIndexes[0]];\n var dropData = args.data[0];\n var totalRecord = [];\n var rows = [];\n totalRecord.push(dropData);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n var parentData = getParentData(this.parent, args.data[0][parentUniqueID]);\n var parentrow = this.parent.getRows()[toIndex];\n totalRecord.push(parentData);\n rows.push(parentrow);\n for (var i = 0; i < totalRecord.length; i++) {\n this.parent.renderModule.cellRender({\n data: totalRecord[i], cell: rows[i].cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n }\n else {\n return;\n }\n };\n RowDD.prototype.orderToIndex = function (currentData) {\n var _loop_1 = function (i) {\n currentData[i].index = i;\n if (!isNullOrUndefined(currentData[i].parentItem)) {\n var updatedParent = currentData.filter(function (data) {\n return data.uniqueID === currentData[i].parentUniqueID;\n })[0];\n currentData[i].parentItem.index = updatedParent.index;\n }\n };\n for (var i = 0; i < currentData.length; i++) {\n _loop_1(i);\n }\n return currentData;\n };\n RowDD.prototype.rowsAdded = function (e) {\n var draggedRecord;\n var dragRecords = e.records;\n for (var i = e.records.length - 1; i > -1; i--) {\n draggedRecord = dragRecords[i];\n if (draggedRecord.parentUniqueID) {\n var record = dragRecords.filter(function (data) {\n return data.uniqueID === draggedRecord.parentUniqueID;\n });\n if (record.length) {\n var index = record[0].childRecords.indexOf(draggedRecord);\n var parentRecord = record[0];\n if (index !== -1) {\n if (isNullOrUndefined(this.parent.idMapping)) {\n parentRecord.childRecords.splice(index, 1);\n if (!parentRecord.childRecords.length) {\n parentRecord.hasChildRecords = false;\n parentRecord.hasFilteredChildRecords = false;\n }\n }\n this.isDraggedWithChild = true;\n }\n }\n }\n }\n if (isNullOrUndefined(this.parent.dataSource) || !this.parent.dataSource.length) {\n var tObj = this.parent;\n var draggedRecord_1;\n var dragRecords_1 = e.records;\n var dragLength = e.records.length;\n for (var i = dragLength - 1; i > -1; i--) {\n draggedRecord_1 = dragRecords_1[i];\n if (!i && draggedRecord_1.hasChildRecords) {\n draggedRecord_1.taskData[this.parent.parentIdMapping] = null;\n }\n var recordIndex1 = 0;\n if (!isNullOrUndefined(tObj.parentIdMapping)) {\n tObj.childMapping = null;\n }\n if (!isNullOrUndefined(draggedRecord_1.taskData) && !isNullOrUndefined(tObj.childMapping) &&\n !Object.prototype.hasOwnProperty.call(draggedRecord_1.taskData, tObj.childMapping)) {\n draggedRecord_1.taskData[tObj.childMapping] = [];\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.childMapping) &&\n (draggedRecord_1[tObj.childMapping]).length && !this.isDraggedWithChild &&\n !isNullOrUndefined(tObj.parentIdMapping)) {\n var childData = (draggedRecord_1[tObj.childMapping]);\n for (var j = 0; j < childData.length; j++) {\n if (dragRecords_1.indexOf(childData[j]) === -1) {\n dragRecords_1.splice(j, 0, childData[j]);\n childData[j].taskData = extend({}, childData[j]);\n i += 1;\n }\n }\n }\n if (Object.prototype.hasOwnProperty.call(draggedRecord_1, tObj.parentIdMapping) && draggedRecord_1[tObj.parentIdMapping] != null\n && !this.isDraggedWithChild) {\n draggedRecord_1.taskData[tObj.parentIdMapping] = null;\n delete draggedRecord_1.parentItem;\n delete draggedRecord_1.parentUniqueID;\n }\n if (isNullOrUndefined(tObj.dataSource)) {\n tObj.dataSource = [];\n }\n tObj.dataSource.splice(recordIndex1, 0, draggedRecord_1.taskData);\n }\n tObj.setProperties({ dataSource: tObj.dataSource }, false);\n }\n else {\n for (var i = 0; i < dragRecords.length; i++) {\n setValue('uniqueIDCollection.' + dragRecords[i].uniqueID, dragRecords[i], this.parent);\n }\n var args = { data: e.records, dropIndex: e.toIndex };\n if (this.parent.dataSource instanceof DataManager) {\n this.treeGridData = this.parent.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n if (isNullOrUndefined(this.dropPosition)) {\n this.dropPosition = 'bottomSegment';\n args.dropIndex = this.parent.getCurrentViewRecords().length > 1 ? this.parent.getCurrentViewRecords().length - 1 :\n args.dropIndex;\n args.data = args.data.map(function (i) {\n if (i.hasChildRecords && isNullOrUndefined(i.parentItem)) {\n i.level = 0;\n return i;\n }\n else {\n delete i.parentItem;\n delete i.parentUniqueID;\n i.level = 0;\n return i;\n }\n });\n }\n this.dropRows(args);\n }\n };\n RowDD.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n this.draggedRecord = e.records[i];\n if (this.draggedRecord.hasChildRecords || this.draggedRecord.parentItem &&\n this.parent.grid.dataSource.\n indexOf(this.getChildrecordsByParentID(this.draggedRecord.parentUniqueID)[0]) !== -1 ||\n this.draggedRecord.level === 0) {\n this.deleteDragRow();\n }\n }\n };\n RowDD.prototype.refreshGridDataSource = function () {\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var proxy = this.parent;\n var tempDataSource;\n var idx;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n tempDataSource = proxy.dataSource.dataSource.json;\n }\n else {\n tempDataSource = proxy.dataSource;\n }\n // eslint-disable-next-line max-len\n if (tempDataSource && (!isNullOrUndefined(droppedRecord) && !droppedRecord.parentItem) && !isNullOrUndefined(droppedRecord.taskData)) {\n for (var i = 0; i < Object.keys(tempDataSource).length; i++) {\n if (tempDataSource[i][this.parent.childMapping] === droppedRecord.taskData[this.parent.childMapping]) {\n idx = i;\n }\n }\n if (this.dropPosition === 'topSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx, 0, draggedRecord.taskData);\n }\n }\n else if (this.dropPosition === 'bottomSegment') {\n if (!this.parent.idMapping) {\n tempDataSource.splice(idx + 1, 0, draggedRecord.taskData);\n }\n }\n }\n else if (!this.parent.parentIdMapping && (!isNullOrUndefined(droppedRecord) && droppedRecord.parentItem)) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n var record = this.getChildrecordsByParentID(droppedRecord.parentUniqueID)[0];\n var childRecords = record.childRecords;\n for (var i = 0; i < childRecords.length; i++) {\n droppedRecord.parentItem.taskData[this.parent.childMapping][i] = childRecords[i].taskData;\n }\n }\n }\n if (this.parent.parentIdMapping) {\n if (draggedRecord.parentItem) {\n if (this.dropPosition === 'topSegment' || this.dropPosition === 'bottomSegment') {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.parentIdMapping];\n }\n else {\n draggedRecord[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n draggedRecord.taskData[this.parent.parentIdMapping] = droppedRecord[this.parent.idMapping];\n }\n }\n else {\n draggedRecord.taskData[this.parent.parentIdMapping] = null;\n draggedRecord[this.parent.parentIdMapping] = null;\n }\n }\n };\n RowDD.prototype.removeFirstrowBorder = function (element) {\n var canremove = this.dropPosition === 'bottomSegment';\n if (this.parent.element.getElementsByClassName('e-firstrow-border').length > 0 && element &&\n (element.rowIndex !== 0 || canremove)) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n };\n RowDD.prototype.removeLastrowBorder = function (element) {\n var isEmptyRow = element && (element.classList.contains('e-emptyrow') || element.classList.contains('e-columnheader')\n || element.classList.contains('e-detailrow'));\n var islastRowIndex = element && !isEmptyRow &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n var canremove = islastRowIndex || this.dropPosition === 'topSegment';\n if (this.parent.element.getElementsByClassName('e-lastrow-border').length > 0 && element && (islastRowIndex || canremove)) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n };\n RowDD.prototype.updateIcon = function (row, index, args) {\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n this.dropPosition = undefined;\n var rowPositionHeight = 0;\n this.removeFirstrowBorder(rowEle);\n this.removeLastrowBorder(rowEle);\n for (var i = 0; i < args.rows.length; i++) {\n if (!isNullOrUndefined(rowEle) && rowEle.getAttribute('data-uid') === args.rows[i].getAttribute('data-uid')\n || !parentsUntil(args.target, 'e-gridcontent')) {\n this.dropPosition = 'Invalid';\n this.addErrorElem();\n }\n }\n // To get the corresponding drop position related to mouse position\n var tObj = this.parent;\n var rowTop = 0;\n var roundOff = 0;\n var toolHeight = tObj.toolbar && tObj.toolbar.length ?\n document.getElementById(tObj.element.id + '_gridcontrol_toolbarItems').offsetHeight : 0;\n // tObj.lastRow = tObj.getRowByIndex(tObj.getCurrentViewRecords().length - 1);\n var positionOffSet = this.getOffset(tObj.element);\n // let contentHeight1: number = (tObj.element.offsetHeight - (tObj.getContent() as HTMLElement).offsetHeight) + positionOffSet.top;\n var contentHeight = tObj.getHeaderContent().offsetHeight + positionOffSet.top + toolHeight;\n var scrollTop = tObj.getContent().firstElementChild.scrollTop;\n if (!isNullOrUndefined(rowEle)) {\n rowPositionHeight = rowEle.offsetTop - scrollTop;\n }\n // let scrollTop = (tObj.grid.scrollModule as any).content.scrollTop;\n rowTop = rowPositionHeight + contentHeight + roundOff;\n var rowBottom = rowTop + row[0].offsetHeight;\n var difference = rowBottom - rowTop;\n var divide = difference / 3;\n var topRowSegment = rowTop + divide;\n var middleRowSegment = topRowSegment + divide;\n var bottomRowSegment = middleRowSegment + divide;\n var mouseEvent = getObject('originalEvent.event', args);\n var touchEvent = getObject('originalEvent.event', args);\n var posy = (mouseEvent.type === 'mousemove') ? mouseEvent.pageY : ((!isNullOrUndefined(touchEvent) &&\n !isNullOrUndefined(touchEvent.changedTouches)) ? touchEvent.changedTouches[0].pageY : null);\n var isTopSegment = posy <= topRowSegment;\n var isMiddleRowSegment = (posy > topRowSegment && posy <= middleRowSegment);\n var isBottomRowSegment = (posy > middleRowSegment && posy <= bottomRowSegment);\n if (isTopSegment || isMiddleRowSegment || isBottomRowSegment) {\n if (isTopSegment && this.dropPosition !== 'Invalid') {\n this.removeChildBorder();\n this.dropPosition = 'topSegment';\n this.removetopOrBottomBorder();\n this.addFirstrowBorder(rowEle);\n this.removeErrorElem();\n this.removeLastrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n if (isMiddleRowSegment && this.dropPosition !== 'Invalid') {\n this.removetopOrBottomBorder();\n var rowElement = [];\n var element = closest(args.target, 'tr');\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n if (rowElement.length > 0) {\n this.addRemoveClasses(rowElement, true, 'e-childborder');\n }\n this.addLastRowborder(rowEle);\n this.addFirstrowBorder(rowEle);\n this.dropPosition = 'middleSegment';\n }\n if (isBottomRowSegment && this.dropPosition !== 'Invalid') {\n this.removeErrorElem();\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n this.dropPosition = 'bottomSegment';\n this.addLastRowborder(rowEle);\n this.removeFirstrowBorder(rowEle);\n this.topOrBottomBorder(args.target);\n }\n }\n return this.dropPosition;\n };\n RowDD.prototype.removeChildBorder = function () {\n var borderElem = [];\n borderElem = [].slice.call(this.parent.element.querySelectorAll('.e-childborder'));\n if (borderElem.length > 0) {\n this.addRemoveClasses(borderElem, false, 'e-childborder');\n }\n };\n RowDD.prototype.addFirstrowBorder = function (targetRow) {\n var node = this.parent.element;\n var tObj = this.parent;\n if (targetRow && targetRow.rowIndex === 0 && !targetRow.classList.contains('e-emptyrow')) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-border' });\n var gridheaderEle = this.parent.getHeaderContent();\n var toolbarHeight = 0;\n if (tObj.toolbar) {\n toolbarHeight = tObj.toolbarModule.getToolbar().offsetHeight;\n }\n var multiplegrid = !isNullOrUndefined(this.parent.rowDropSettings.targetID);\n if (multiplegrid) {\n div.style.top = this.parent.grid.element.getElementsByClassName('e-gridheader')[0].offsetHeight\n + toolbarHeight + 'px';\n }\n div.style.width = multiplegrid ? node.offsetWidth + 'px' :\n node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-border').length) {\n gridheaderEle.appendChild(div);\n }\n }\n };\n RowDD.prototype.addLastRowborder = function (trElement) {\n var isEmptyRow = trElement && (trElement.classList.contains('e-emptyrow') ||\n trElement.classList.contains('e-columnheader') || trElement.classList.contains('e-detailrow'));\n if (trElement && !isEmptyRow && this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n var bottomborder = this.parent.createElement('div', { className: 'e-lastrow-border' });\n var gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-border').length) {\n gridcontentEle.classList.add('e-treegrid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.addErrorElem = function () {\n var dragelem = document.getElementsByClassName('e-cloneproperties')[0];\n var errorelem = dragelem.querySelectorAll('.e-errorelem').length;\n if (!errorelem && !this.parent.rowDropSettings.targetID) {\n var ele = document.createElement('div');\n classList(ele, ['e-errorcontainer'], []);\n classList(ele, ['e-icons', 'e-errorelem'], []);\n var errorVal = dragelem.querySelector('.errorValue');\n var content = dragelem.querySelector('.e-rowcell').innerHTML;\n if (errorVal) {\n content = errorVal.innerHTML;\n errorVal.parentNode.removeChild(errorVal);\n }\n dragelem.querySelector('.e-rowcell').innerHTML = '';\n var spanContent = document.createElement('span');\n spanContent.className = 'errorValue';\n spanContent.style.paddingLeft = '16px';\n spanContent.innerHTML = content;\n dragelem.querySelector('.e-rowcell').appendChild(ele);\n dragelem.querySelector('.e-rowcell').appendChild(spanContent);\n }\n };\n RowDD.prototype.removeErrorElem = function () {\n var errorelem = document.querySelector('.e-errorelem');\n if (errorelem) {\n errorelem.remove();\n }\n };\n RowDD.prototype.topOrBottomBorder = function (target) {\n var rowElement = [];\n var element = closest(target, 'tr');\n rowElement = element ? [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse')) : [];\n if (rowElement.length) {\n if (this.dropPosition === 'topSegment') {\n this.addRemoveClasses(rowElement, true, 'e-droptop');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n if (this.dropPosition === 'bottomSegment') {\n this.addRemoveClasses(rowElement, true, 'e-dropbottom');\n }\n }\n };\n RowDD.prototype.removetopOrBottomBorder = function () {\n var border = [];\n border = [].slice.call(this.parent.element.querySelectorAll('.e-dropbottom, .e-droptop'));\n if (border.length) {\n this.addRemoveClasses(border, false, 'e-dropbottom');\n this.addRemoveClasses(border, false, 'e-droptop');\n }\n };\n RowDD.prototype.addRemoveClasses = function (cells, add, className) {\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n cells[i].classList.add(className);\n }\n else {\n cells[i].classList.remove(className);\n }\n }\n };\n RowDD.prototype.getOffset = function (element) {\n var box = element.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n var top = box.top + scrollTop - clientTop;\n var left = box.left + scrollLeft - clientLeft;\n return { top: Math.round(top), left: Math.round(left) };\n };\n RowDD.prototype.Rowdraging = function (args) {\n var tObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n cloneElement.style.cursor = '';\n var rowEle = args.target ? closest(args.target, 'tr') : null;\n var rowIdx = rowEle ? rowEle.rowIndex : -1;\n var dragRecords = [];\n var droppedRecord = tObj.getCurrentViewRecords()[rowIdx];\n this.removeErrorElem();\n this.canDrop = true;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n if (rowIdx !== -1) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.canDrop = false;\n this.addErrorElem();\n }\n if (!tObj.rowDropSettings.targetID && this.canDrop) {\n tObj.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n if (tObj.rowDropSettings.targetID) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID) {\n var srcControl = dropElement.ej2_instances[0];\n srcControl.rowDragAndDropModule.updateIcon(args.rows, rowIdx, args);\n }\n }\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID)) {\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n if (!dropElement) {\n cloneElement.style.cursor = 'default';\n }\n }\n };\n RowDD.prototype.rowDropped = function (args) {\n var tObj = this.parent;\n var parentItem = 'parentItem';\n if (!tObj.rowDropSettings.targetID) {\n if (parentsUntil(args.target, 'e-content')) {\n if (this.parent.element.querySelector('.e-errorelem')) {\n this.dropPosition = 'Invalid';\n }\n setValue('dropPosition', this.dropPosition, args);\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel) {\n if (!isCountRequired(this.parent)) {\n this.dropRows(args);\n }\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n tObj.grid.refresh();\n if (!isNullOrUndefined(tObj.getHeaderContent().querySelector('.e-firstrow-border'))) {\n tObj.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n }\n }\n }\n else {\n if (args.target && closest(args.target, '#' + tObj.rowDropSettings.targetID) || parentsUntil(args.target, 'e-treegrid') &&\n parentsUntil(args.target, 'e-treegrid').id === tObj.rowDropSettings.targetID || args.target && document.getElementById(tObj.rowDropSettings.targetID)) {\n setValue('dropPosition', this.dropPosition, args);\n tObj.trigger(events.rowDrop, args);\n if (!args.cancel && tObj.rowDropSettings.targetID) {\n this.dragDropGrid(args);\n if (tObj.isLocalData) {\n tObj.flatData = this.orderToIndex(tObj.flatData);\n }\n }\n }\n }\n this.removetopOrBottomBorder();\n this.removeChildBorder();\n if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-firstrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-firstrow-border')[0].remove();\n }\n else if (!isNullOrUndefined(this.parent.element.getElementsByClassName('e-lastrow-border')[0])) {\n this.parent.element.getElementsByClassName('e-lastrow-border')[0].remove();\n }\n if (this.parent.enableImmutableMode && !this.parent.allowPaging && !isNullOrUndefined(args.data[0][parentItem])) {\n var index = this.parent.treeColumnIndex;\n index = index + 1;\n var primaryKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var rowIndex = this.parent.grid.getRowIndexByPrimaryKey(args.data[0][primaryKeyField]);\n var row = this.parent.getRows()[rowIndex];\n var data = args.data[0];\n if (this.dropPosition === 'middleSegment') {\n var record = [];\n var rows = [];\n record.push(data);\n rows.push(row);\n var parentUniqueID = 'parentUniqueID';\n data = getParentData(this.parent, args.data[0][parentUniqueID]);\n rowIndex = this.parent.grid.getRowIndexByPrimaryKey(data[primaryKeyField]);\n var parentrow = this.parent.getRows()[rowIndex];\n record.push(data);\n rows.push(parentrow);\n for (var i = 0; i < record.length; i++) {\n this.parent.renderModule.cellRender({\n data: record[i], cell: rows[i].cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n var targetEle = parentrow.getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n else {\n this.parent.renderModule.cellRender({\n data: data, cell: row.cells[index],\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n }\n }\n };\n RowDD.prototype.dragDropGrid = function (args) {\n var tObj = this.parent;\n var targetRow = closest(args.target, 'tr');\n var targetIndex = isNaN(this.getTargetIdx(targetRow)) ? 0 : this.getTargetIdx(targetRow);\n var dropElement = parentsUntil(args.target, 'e-treegrid');\n var srcControl;\n if (dropElement && dropElement.id === this.parent.rowDropSettings.targetID && !isRemoteData(this.parent)\n && !isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n var records = tObj.getSelectedRecords();\n var indexes = [];\n for (var i = 0; i < records.length; i++) {\n indexes[i] = records[i].index;\n }\n var data = srcControl.dataSource;\n if (this.parent.idMapping != null && (isNullOrUndefined(this.dropPosition) || this.dropPosition === 'bottomSegment' || this.dropPosition === 'Invalid') && !(data.length)) {\n var actualData = [];\n for (var i = 0; i < records.length; i++) {\n if (records[i].hasChildRecords) {\n actualData.push(records[i]);\n var child = findChildrenRecords(records[i]);\n for (var i_1 = 0; i_1 < child.length; i_1++) {\n actualData.push(child[i_1]); // push child records to drop the parent record along with its child records\n }\n }\n }\n if (actualData.length) {\n records = actualData;\n }\n }\n tObj.notify(events.rowsRemove, { indexes: indexes, records: records });\n srcControl.notify(events.rowsAdd, { toIndex: targetIndex, records: records });\n var srcControlFlatData = srcControl.rowDragAndDropModule.treeGridData;\n if (!isNullOrUndefined(srcControlFlatData)) {\n for (var i = 0; i < srcControlFlatData.length; i++) {\n srcControlFlatData[i].index = i;\n if (!isNullOrUndefined(srcControlFlatData[i].parentItem)) {\n var actualIndex = getValue('uniqueIDCollection.' + srcControlFlatData[i].parentUniqueID + '.index', srcControl);\n srcControlFlatData[i].parentItem.index = actualIndex;\n }\n }\n }\n tObj.grid.refresh();\n srcControl.grid.refresh();\n if (srcControl.grid.dataSource.length > 1) {\n srcControl.grid.refresh();\n if (!isNullOrUndefined(srcControl.getHeaderContent().querySelector('.e-firstrow-border'))) {\n srcControl.getHeaderContent().querySelector('.e-firstrow-border').remove();\n }\n if (!isNullOrUndefined(srcControl.getContent().querySelector('.e-lastrow-border'))) {\n srcControl.getContent().querySelector('.e-lastrow-border').remove();\n }\n }\n }\n if (isCountRequired(this.parent)) {\n srcControl = dropElement.ej2_instances[0];\n tObj.grid.refresh();\n srcControl.grid.refresh();\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute('aria-rowindex'), 10) : 0;\n };\n RowDD.prototype.getParentData = function (record) {\n var parentItem = record.parentItem;\n if (this.dropPosition === 'bottomSegment') {\n var selectedRecord = this.parent.getSelectedRecords()[0];\n this.droppedRecord = getParentData(this.parent, selectedRecord.parentItem.uniqueID);\n }\n if (this.dropPosition === 'middleSegment') {\n var level = this.parent.getSelectedRecords()[0].level;\n if (level === parentItem.level) {\n this.droppedRecord = getParentData(this.parent, parentItem.uniqueID);\n }\n else {\n this.getParentData(parentItem);\n }\n }\n };\n RowDD.prototype.dropRows = function (args, isByMethod) {\n if (this.dropPosition !== 'Invalid' && !isRemoteData(this.parent)) {\n var tObj = this.parent;\n var draggedRecord_2;\n var droppedRecord = void 0;\n if (isNullOrUndefined(args.dropIndex)) {\n var rowIndex = tObj.getSelectedRowIndexes()[0] - 1;\n var record = tObj.getCurrentViewRecords()[rowIndex];\n this.getParentData(record);\n }\n else {\n args.dropIndex = args.dropIndex === args.fromIndex ? this.getTargetIdx(args.target.parentElement) : args.dropIndex;\n this.droppedRecord = tObj.getCurrentViewRecords()[args.dropIndex];\n }\n var dragRecords = [];\n droppedRecord = this.droppedRecord;\n if (!args.data[0]) {\n dragRecords.push(args.data);\n }\n else {\n dragRecords = args.data;\n }\n var count = 0;\n var multiplegrid = this.parent.rowDropSettings.targetID;\n this.isMultipleGrid = multiplegrid;\n if (!multiplegrid) {\n this.ensuredropPosition(dragRecords, droppedRecord);\n }\n else {\n this.isaddtoBottom = multiplegrid && this.isDraggedWithChild;\n }\n var dragLength = dragRecords.length;\n if (!isNullOrUndefined(this.parent.idMapping)) {\n dragRecords.reverse();\n }\n var _loop_2 = function (i) {\n draggedRecord_2 = dragRecords[i];\n this_1.draggedRecord = draggedRecord_2;\n if (this_1.dropPosition !== 'Invalid') {\n if (!tObj.rowDropSettings.targetID || isByMethod) {\n this_1.deleteDragRow();\n }\n if (this_1.draggedRecord === this_1.droppedRecord) {\n var correctIndex = this_1.getTargetIdx(args.target.offsetParent.parentElement);\n if (isNaN(correctIndex)) {\n correctIndex = this_1.getTargetIdx(args.target.parentElement);\n }\n args.dropIndex = correctIndex;\n droppedRecord = this_1.droppedRecord = this_1.parent.getCurrentViewRecords()[args.dropIndex];\n }\n if (droppedRecord.parentItem || this_1.dropPosition === 'middleSegment') {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.draggedRecord);\n if (newParentIndex !== -1) {\n parentRecords.splice(newParentIndex, 1);\n }\n }\n var recordIndex1 = this_1.treeGridData.indexOf(droppedRecord);\n this_1.dropAtTop(recordIndex1);\n if (this_1.dropPosition === 'bottomSegment') {\n if (!droppedRecord.hasChildRecords) {\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + 1, 0, this_1.draggedRecord);\n }\n else {\n count = this_1.getChildCount(droppedRecord, 0);\n if (this_1.parent.parentIdMapping) {\n this_1.treeData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord.taskData);\n }\n this_1.treeGridData.splice(recordIndex1 + count + 1, 0, this_1.draggedRecord);\n }\n if (isNullOrUndefined(droppedRecord.parentItem)) {\n delete draggedRecord_2.parentItem;\n draggedRecord_2.level = 0;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = null;\n }\n }\n if (droppedRecord.parentItem) {\n var rec = this_1.getChildrecordsByParentID(droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(droppedRecord) + 1;\n childRecords.splice(droppedRecordIndex, 0, draggedRecord_2);\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.parentUniqueID = droppedRecord.parentUniqueID;\n if (this_1.parent.parentIdMapping) {\n draggedRecord_2[this_1.parent.parentIdMapping] = droppedRecord[this_1.parent.parentIdMapping];\n draggedRecord_2.parentItem = droppedRecord.parentItem;\n draggedRecord_2.level = droppedRecord.level;\n }\n }\n if (draggedRecord_2.hasChildRecords) {\n var level = 1;\n this_1.updateChildRecordLevel(draggedRecord_2, level);\n this_1.updateChildRecord(draggedRecord_2, recordIndex1 + count + 1);\n }\n }\n this_1.dropMiddle(recordIndex1);\n }\n if (isNullOrUndefined(draggedRecord_2.parentItem)) {\n var parentRecords = tObj.parentData;\n var newParentIndex = parentRecords.indexOf(this_1.droppedRecord);\n var nonRepeat_1 = 0;\n parentRecords.filter(function (e) {\n if (draggedRecord_2.uniqueID === e.uniqueID) {\n nonRepeat_1++;\n }\n });\n if (this_1.dropPosition === 'bottomSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex + 1, 0, draggedRecord_2);\n }\n else if (this_1.dropPosition === 'topSegment' && nonRepeat_1 === 0) {\n parentRecords.splice(newParentIndex, 0, draggedRecord_2);\n }\n }\n tObj.rowDragAndDropModule.refreshGridDataSource();\n };\n var this_1 = this;\n for (var i = 0; i < dragLength; i++) {\n _loop_2(i);\n }\n }\n };\n RowDD.prototype.dropMiddle = function (recordIndex) {\n var tObj = this.parent;\n var childRecords = findChildrenRecords(this.droppedRecord);\n var childRecordsLength = (isNullOrUndefined(childRecords) ||\n childRecords.length === 0) ? recordIndex + 1 :\n childRecords.length + recordIndex + 1;\n if (this.dropPosition === 'middleSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(childRecordsLength, 0, this.draggedRecord.taskData);\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n else {\n this.treeGridData.splice(childRecordsLength, 0, this.draggedRecord);\n }\n this.recordLevel();\n if (this.draggedRecord.hasChildRecords) {\n this.updateChildRecord(this.draggedRecord, childRecordsLength);\n }\n }\n };\n RowDD.prototype.dropAtTop = function (recordIndex1) {\n var tObj = this.parent;\n if (this.dropPosition === 'topSegment') {\n if (tObj.parentIdMapping) {\n this.treeData.splice(recordIndex1, 0, this.draggedRecord.taskData);\n }\n this.draggedRecord.parentItem = this.treeGridData[recordIndex1].parentItem;\n this.draggedRecord.parentUniqueID = this.treeGridData[recordIndex1].parentUniqueID;\n this.draggedRecord.level = this.treeGridData[recordIndex1].level;\n this.treeGridData.splice(recordIndex1, 0, this.draggedRecord);\n if (this.draggedRecord.hasChildRecords) {\n var level = 1;\n this.updateChildRecord(this.draggedRecord, recordIndex1);\n this.updateChildRecordLevel(this.draggedRecord, level);\n }\n if (this.droppedRecord.parentItem) {\n var rec = this.getChildrecordsByParentID(this.droppedRecord.parentUniqueID);\n var childRecords = rec[0].childRecords;\n var droppedRecordIndex = childRecords.indexOf(this.droppedRecord);\n childRecords.splice(droppedRecordIndex, 0, this.draggedRecord);\n }\n }\n };\n RowDD.prototype.recordLevel = function () {\n var tObj = this.parent;\n var draggedRecord = this.draggedRecord;\n var droppedRecord = this.droppedRecord;\n var childItem = tObj.childMapping;\n if (!droppedRecord.hasChildRecords) {\n droppedRecord.hasChildRecords = true;\n droppedRecord.hasFilteredChildRecords = true;\n if (isNullOrUndefined(droppedRecord.childRecords) || droppedRecord.childRecords.length === 0) {\n droppedRecord.childRecords = [];\n if (!tObj.parentIdMapping && isNullOrUndefined(droppedRecord.taskData[childItem])) {\n droppedRecord.taskData[childItem] = [];\n }\n }\n }\n if (this.dropPosition === 'middleSegment') {\n var parentItem = extend({}, droppedRecord);\n delete parentItem.childRecords;\n draggedRecord.parentItem = parentItem;\n draggedRecord.parentUniqueID = droppedRecord.uniqueID;\n droppedRecord.childRecords.splice(droppedRecord.childRecords.length, 0, draggedRecord);\n var isSelfReference = 'isSelfReference';\n if (tObj[isSelfReference]) {\n droppedRecord[tObj.childMapping] = [];\n droppedRecord[tObj.childMapping].splice(droppedRecord[tObj.childMapping].length, 0, draggedRecord);\n }\n if (!isNullOrUndefined(draggedRecord) && !tObj.parentIdMapping && !isNullOrUndefined(droppedRecord.taskData[childItem])) {\n droppedRecord.taskData[tObj.childMapping].splice(droppedRecord.childRecords.length, 0, draggedRecord.taskData);\n }\n if (!draggedRecord.hasChildRecords) {\n draggedRecord.level = droppedRecord.level + 1;\n }\n else {\n var level = 1;\n draggedRecord.level = droppedRecord.level + 1;\n this.updateChildRecordLevel(draggedRecord, level);\n }\n droppedRecord.expanded = true;\n }\n };\n RowDD.prototype.deleteDragRow = function () {\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n this.treeGridData = this.parent.grid.dataSource.dataSource.json;\n this.treeData = this.parent.dataSource.dataSource.json;\n }\n else {\n this.treeGridData = this.parent.grid.dataSource;\n this.treeData = this.parent.dataSource;\n }\n var deletedRow = getParentData(this.parent, this.draggedRecord.uniqueID);\n if (!isNullOrUndefined(deletedRow.childRecords) && deletedRow.childRecords.length) {\n deletedRow.hasChildRecords = true;\n }\n this.removeRecords(deletedRow);\n };\n RowDD.prototype.updateChildRecord = function (record, count) {\n var currentRecord;\n var tObj = this.parent;\n var length = 0;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, tObj);\n count++;\n tObj.flatData.splice(count, 0, currentRecord);\n setValue('uniqueIDCollection.' + currentRecord.uniqueID, currentRecord, this.parent);\n if (tObj.parentIdMapping) {\n this.treeData.splice(count, 0, currentRecord.taskData);\n }\n if (currentRecord.hasChildRecords) {\n count = this.updateChildRecord(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.updateChildRecordLevel = function (record, level) {\n var length = 0;\n var currentRecord;\n level++;\n if (!record.hasChildRecords) {\n return 0;\n }\n length = record.childRecords.length;\n for (var i = 0; i < length; i++) {\n currentRecord = getValue('uniqueIDCollection.' + record.childRecords[i].uniqueID, this.parent);\n var parentData = void 0;\n if (record.parentItem) {\n parentData = getParentData(this.parent, record.parentItem.uniqueID);\n }\n if (isNullOrUndefined(parentData) && !isNullOrUndefined(record.parentItem)) {\n parentData = record.parentItem;\n }\n currentRecord.level = record.parentItem ? parentData.level + level : record.level + 1;\n if (currentRecord.hasChildRecords) {\n level--;\n level = this.updateChildRecordLevel(currentRecord, level);\n }\n }\n return level;\n };\n RowDD.prototype.removeRecords = function (record) {\n var tObj = this.parent;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n var deletedRow = record;\n var isSelfReference = !isNullOrUndefined(tObj.parentIdMapping);\n var flatParentData = this.getChildrecordsByParentID(deletedRow.parentUniqueID)[0];\n if (deletedRow) {\n if (deletedRow.parentItem) {\n var childRecords = flatParentData ? flatParentData.childRecords : [];\n var childIndex = 0;\n if (childRecords && childRecords.length > 0) {\n childIndex = childRecords.indexOf(deletedRow);\n flatParentData.childRecords.splice(childIndex, 1);\n if (!this.parent.parentIdMapping) {\n editAction({ value: deletedRow, action: 'delete' }, this.parent, isSelfReference, deletedRow.index, deletedRow.index);\n }\n }\n }\n if (tObj.parentIdMapping) {\n if (deletedRow.hasChildRecords && deletedRow.childRecords.length > 0) {\n this.removeChildItem(deletedRow);\n }\n var idx = void 0;\n var idz = void 0;\n var treeGridData = dataSource;\n for (var i = 0; i < treeGridData.length; i++) {\n if (treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idx = i;\n }\n }\n for (var i = 0; i < this.treeGridData.length; i++) {\n if (this.treeGridData[i][this.parent.idMapping] === deletedRow.taskData[this.parent.idMapping]) {\n idz = i;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n }\n var recordIndex = this.treeGridData.indexOf(deletedRow);\n if (!tObj.parentIdMapping) {\n var parentIndex = this.parent.parentData.indexOf(deletedRow);\n if (parentIndex !== -1) {\n tObj.parentData.splice(parentIndex, 1);\n dataSource.splice(parentIndex, 1);\n }\n }\n if (recordIndex === -1 && !tObj.parentIdMapping) {\n var primaryKeyField = tObj.getPrimaryKeyFieldNames()[0];\n for (var j = 0; j < this.treeGridData.length; j++) {\n if (this.treeGridData[j][primaryKeyField] === deletedRow[primaryKeyField]) {\n recordIndex = j;\n }\n }\n }\n if (!tObj.parentIdMapping) {\n var deletedRecordCount = this.getChildCount(deletedRow, 0);\n this.treeGridData.splice(recordIndex, deletedRecordCount + 1);\n }\n if (deletedRow.parentItem && flatParentData && flatParentData.childRecords && !flatParentData.childRecords.length) {\n flatParentData.expanded = false;\n flatParentData.hasChildRecords = false;\n flatParentData.hasFilteredChildRecords = false;\n }\n }\n };\n RowDD.prototype.removeChildItem = function (record) {\n var currentRecord;\n var idx;\n var idz;\n var dataSource;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n dataSource = this.parent.dataSource.dataSource.json;\n }\n else {\n dataSource = this.parent.dataSource;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n if (!isNullOrUndefined(currentRecord.childRecords) && currentRecord.childRecords.length) {\n currentRecord.hasChildRecords = true;\n }\n var treeGridData = void 0;\n if (this.parent.dataSource instanceof DataManager && isOffline(this.parent)) {\n treeGridData = this.parent.dataSource.dataSource.json;\n }\n else {\n treeGridData = this.parent.dataSource;\n }\n for (var i_2 = 0; i_2 < treeGridData.length; i_2++) {\n if (treeGridData[i_2][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idx = i_2;\n }\n }\n for (var i_3 = 0; i_3 < this.treeGridData.length; i_3++) {\n if (this.treeGridData[i_3][this.parent.idMapping] === currentRecord.taskData[this.parent.idMapping]) {\n idz = i_3;\n break;\n }\n }\n if (idx !== -1 && !isNullOrUndefined(idx)) {\n dataSource.splice(idx, 1);\n }\n if (idz !== -1 && !isNullOrUndefined(idz)) {\n this.treeGridData.splice(idz, 1);\n }\n if (currentRecord.hasChildRecords) {\n this.removeChildItem(currentRecord);\n }\n }\n };\n RowDD.prototype.getChildCount = function (record, count) {\n var currentRecord;\n if (!record.hasChildRecords) {\n return 0;\n }\n for (var i = 0; i < record.childRecords.length; i++) {\n currentRecord = record.childRecords[i];\n count++;\n if (currentRecord.hasChildRecords) {\n count = this.getChildCount(currentRecord, count);\n }\n }\n return count;\n };\n RowDD.prototype.ensuredropPosition = function (draggedRecords, currentRecord) {\n var _this = this;\n draggedRecords.filter(function (e) {\n if (e.hasChildRecords && !isNullOrUndefined(e.childRecords)) {\n var valid = e.childRecords.indexOf(currentRecord);\n if (valid === -1) {\n _this.ensuredropPosition(e.childRecords, currentRecord);\n }\n else {\n _this.dropPosition = 'Invalid';\n _this.addErrorElem();\n _this.canDrop = false;\n return;\n }\n }\n });\n };\n RowDD.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n RowDD.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowdraging, this.Rowdraging);\n this.parent.off(events.rowDropped, this.rowDropped);\n this.parent.off(events.rowsAdd, this.rowsAdded);\n this.parent.off(events.rowsRemove, this.rowsRemoved);\n };\n /**\n * hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns RowDragAndDrop module name\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n return RowDD;\n}());\nexport { RowDD };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the row drop settings of the TreeGrid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualRowModelGenerator } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar TreeVirtualRowModelGenerator = /** @class */ (function (_super) {\n __extends(TreeVirtualRowModelGenerator, _super);\n function TreeVirtualRowModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.addEventListener();\n return _this;\n }\n TreeVirtualRowModelGenerator.prototype.addEventListener = function () {\n this.parent.on(events.dataListener, this.getDatas, this);\n };\n TreeVirtualRowModelGenerator.prototype.getDatas = function (args) {\n this.visualData = args.data;\n };\n TreeVirtualRowModelGenerator.prototype.getDataInfo = function () {\n return _super.prototype.getData.call(this);\n };\n TreeVirtualRowModelGenerator.prototype.generateRows = function (data, notifyArgs) {\n if (!isNullOrUndefined(notifyArgs.virtualInfo) && notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.nextInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.nextInfo.page } }, true);\n }\n else if (!isNullOrUndefined(notifyArgs.virtualInfo) && !notifyArgs.virtualInfo.loadNext &&\n notifyArgs.virtualInfo.page !== this.parent.pageSettings.currentPage) {\n this.parent.setProperties({ pageSettings: { currentPage: notifyArgs.virtualInfo.page } }, true);\n }\n var info = this.getDataInfo();\n if (!isNullOrUndefined(notifyArgs.virtualInfo)) {\n if (notifyArgs.virtualInfo.direction !== 'right' && notifyArgs.virtualInfo.direction !== 'left') {\n notifyArgs.virtualInfo.blockIndexes = info.blockIndexes;\n }\n else {\n notifyArgs.virtualInfo.blockIndexes = this.getBlockIndexes(notifyArgs.virtualInfo.page);\n }\n }\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n return _super.prototype.generateRows.call(this, data, notifyArgs);\n }\n else {\n if (!isNullOrUndefined(notifyArgs.requestType) && notifyArgs.requestType.toString() === 'collapseAll') {\n notifyArgs.requestType = 'refresh';\n }\n var rows = _super.prototype.generateRows.call(this, data, notifyArgs);\n for (var r = 0; r < rows.length; r++) {\n rows[r].index = (this.visualData).indexOf(rows[r].data);\n }\n return rows;\n }\n };\n TreeVirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var clear = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'reorder',\n 'save', 'delete'].some(function (value) { return action === value; });\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n var model = 'model';\n var currentPage = this[model].currentPage;\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n else if (action === 'virtualscroll' && this.cache[currentPage] &&\n this.cache[currentPage].length > (this.parent.contentModule).getBlockSize()) {\n delete this.cache[currentPage];\n }\n }\n else {\n if (clear || action === 'virtualscroll') {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n }\n return clear;\n };\n return TreeVirtualRowModelGenerator;\n}(VirtualRowModelGenerator));\nexport { TreeVirtualRowModelGenerator };\n","import { getObject, Filter as GridFilter, Grid } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { getParentData } from '../utils';\n/**\n * TreeGrid Filter module will handle filtering action\n *\n * @hidden\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Filter module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Filter(parent) {\n Grid.Inject(GridFilter);\n this.parent = parent;\n this.isHierarchyFilter = false;\n this.filteredResult = [];\n this.flatFilteredData = [];\n this.filteredParentRecs = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Filter module name\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n /**\n * To destroy the Filter module\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.addEventListener = function () {\n this.parent.on('updateFilterRecs', this.updatedFilteredRecord, this);\n this.parent.on('clearFilters', this.clearFilterLevel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Filter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateFilterRecs', this.updatedFilteredRecord);\n this.parent.off('clearFilters', this.clearFilterLevel);\n };\n /**\n * Function to update filtered records\n *\n * @param {{data: Object} } dataDetails - Filtered data collection\n * @param {Object} dataDetails.data - Fliltered data collection\n * @hidden\n * @returns {void}\n */\n Filter.prototype.updatedFilteredRecord = function (dataDetails) {\n setValue('uniqueIDFilterCollection', {}, this.parent);\n this.flatFilteredData = dataDetails.data;\n this.filteredParentRecs = [];\n this.filteredResult = [];\n this.isHierarchyFilter = false;\n for (var f = 0; f < this.flatFilteredData.length; f++) {\n var rec = this.flatFilteredData[f];\n this.addParentRecord(rec);\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'None') &&\n (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== ''))) {\n this.isHierarchyFilter = true;\n }\n var ischild = getObject('childRecords', rec);\n if (!isNullOrUndefined(ischild) && ischild.length) {\n setValue('hasFilteredChildRecords', this.checkChildExsist(rec), rec);\n }\n var parent_1 = getObject('parentItem', rec);\n if (!isNullOrUndefined(parent_1)) {\n var parRecord = getParentData(this.parent, rec.parentItem.uniqueID, true);\n //let parRecord: Object = this.flatFilteredData.filter((e: ITreeData) => {\n // return e.uniqueID === rec.parentItem.uniqueID; })[0];\n setValue('hasFilteredChildRecords', true, parRecord);\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n }\n }\n if (this.flatFilteredData.length > 0 && this.isHierarchyFilter) {\n this.updateFilterLevel();\n }\n this.parent.notify('updateAction', { result: this.filteredResult });\n };\n Filter.prototype.updateParentFilteredRecord = function (record) {\n var parRecord = getParentData(this.parent, record.parentItem.uniqueID, true);\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (parRecord && Object.prototype.hasOwnProperty.call(uniqueIDValue, parRecord.uniqueID)) {\n setValue('hasFilteredChildRecords', true, parRecord);\n }\n if (parRecord && parRecord.parentItem) {\n this.updateParentFilteredRecord(parRecord);\n }\n };\n Filter.prototype.addParentRecord = function (record) {\n var parent = getParentData(this.parent, record.parentUniqueID);\n //let parent: Object = this.parent.flatData.filter((e: ITreeData) => {return e.uniqueID === record.parentUniqueID; })[0];\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ? this.parent.filterSettings.hierarchyMode\n : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode === 'None' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (isNullOrUndefined(parent)) {\n if (this.flatFilteredData.indexOf(record) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n record.hasFilteredChildRecords = true;\n }\n return;\n }\n }\n else {\n this.addParentRecord(parent);\n if (this.flatFilteredData.indexOf(parent) !== -1 || this.filteredResult.indexOf(parent) !== -1) {\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n else {\n if (this.filteredResult.indexOf(record) === -1 && this.flatFilteredData.indexOf(record) !== -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n }\n }\n else {\n if (!isNullOrUndefined(parent)) {\n var hierarchyMode_1 = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (hierarchyMode_1 === 'Child' && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(parent) !== -1) {\n this.addParentRecord(parent);\n }\n }\n else {\n this.addParentRecord(parent);\n }\n }\n if (this.filteredResult.indexOf(record) === -1) {\n this.filteredResult.push(record);\n setValue('uniqueIDFilterCollection.' + record.uniqueID, record, this.parent);\n }\n }\n };\n Filter.prototype.checkChildExsist = function (records) {\n var childRec = getObject('childRecords', records);\n var isExist = false;\n for (var count = 0; count < childRec.length; count++) {\n var ischild = childRec[count].childRecords;\n var hierarchyMode = this.parent.grid.searchSettings.key === '' ?\n this.parent.filterSettings.hierarchyMode : this.parent.searchSettings.hierarchyMode;\n if (((hierarchyMode === 'Child' || hierarchyMode === 'Both') && (this.parent.grid.filterSettings.columns.length !== 0\n || this.parent.grid.searchSettings.key !== ''))) {\n var uniqueIDValue = getValue('uniqueIDFilterCollection', this.parent);\n if (!Object.prototype.hasOwnProperty.call(uniqueIDValue, childRec[count].uniqueID)) {\n this.filteredResult.push(childRec[count]);\n setValue('uniqueIDFilterCollection.' + childRec[count].uniqueID, childRec[count], this.parent);\n isExist = true;\n }\n }\n if ((hierarchyMode === 'None')\n && (this.parent.grid.filterSettings.columns.length !== 0 || this.parent.grid.searchSettings.key !== '')) {\n if (this.flatFilteredData.indexOf(childRec[count]) !== -1) {\n isExist = true;\n break;\n }\n }\n if (!isNullOrUndefined(ischild) && ischild.length) {\n isExist = this.checkChildExsist(childRec[count]);\n }\n if ((hierarchyMode === 'Child' || hierarchyMode === 'Both') && childRec.length) {\n isExist = true;\n }\n }\n return isExist;\n };\n Filter.prototype.updateFilterLevel = function () {\n var record = this.filteredResult;\n var len = this.filteredResult.length;\n for (var c = 0; c < len; c++) {\n var parent_2 = getParentData(this.parent, record[c].parentUniqueID);\n var isPrst = record.indexOf(parent_2) !== -1;\n if (isPrst) {\n var parent_3 = getParentData(this.parent, record[c].parentUniqueID, true);\n record[c].filterLevel = parent_3.filterLevel + 1;\n }\n else {\n record[c].filterLevel = 0;\n this.filteredParentRecs.push(record[c]);\n }\n }\n };\n Filter.prototype.clearFilterLevel = function (data) {\n var count = 0;\n var flatData = data.flatData;\n var len = flatData.length;\n var currentRecord;\n for (count; count < len; count++) {\n currentRecord = flatData[count];\n var fLevel = currentRecord.filterLevel;\n if (fLevel || fLevel === 0 || !isNullOrUndefined(currentRecord.hasFilteredChildRecords)) {\n currentRecord.hasFilteredChildRecords = null;\n currentRecord.filterLevel = null;\n }\n }\n this.filteredResult = [];\n this.parent.notify('updateResults', { result: flatData, count: flatData.length });\n };\n return Filter;\n}());\nexport { Filter };\n","import { getObject, Grid, ExcelExport as GridExcel } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, getParentData, getExpandStatus } from '../utils';\nimport { isNullOrUndefined, setValue, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid Excel Export module\n *\n * @hidden\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for Excel Export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ExcelExport(parent) {\n this.isCollapsedStatePersist = false;\n Grid.Inject(GridExcel);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ExcelExport module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.addEventListener = function () {\n this.parent.on('updateResults', this.updateExcelResultModel, this);\n this.parent.on('excelCellInfo', this.excelQueryCellInfo, this);\n this.parent.grid.on('export-RowDataBound', this.exportRowDataBound, this);\n this.parent.grid.on('finalPageSetup', this.finalPageSetup, this);\n };\n /**\n * To destroy the Excel Export\n *\n * @returns {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateResults', this.updateExcelResultModel);\n this.parent.off('excelCellInfo', this.excelQueryCellInfo);\n this.parent.grid.off('export-RowDataBound', this.exportRowDataBound);\n this.parent.grid.off('finalPageSetup', this.finalPageSetup);\n };\n ExcelExport.prototype.updateExcelResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n ExcelExport.prototype.Map = function (excelExportProperties, \n /* eslint-disable-next-line */\n isMultipleExport, workbook, isBlob, isCsv) {\n var _this = this;\n var dataSource = this.parent.dataSource;\n var property = Object();\n setValue('isCsv', isCsv, property);\n setValue('cancel', false, property);\n if (!isNullOrUndefined(excelExportProperties)) {\n this.isCollapsedStatePersist = excelExportProperties.isCollapsedStatePersist;\n }\n return new Promise(function (resolve) {\n var dm = _this.isLocal() && !(dataSource instanceof DataManager) ? new DataManager(dataSource)\n : _this.parent.dataSource;\n var query = new Query();\n if (!_this.isLocal()) {\n query = _this.generateQuery(query);\n setValue('query', query, property);\n }\n _this.parent.trigger(event.beforeExcelExport, extend(property, excelExportProperties));\n if (getObject('cancel', property)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customData = null;\n if (!isNullOrUndefined(excelExportProperties) && !isNullOrUndefined(excelExportProperties.dataSource)) {\n customData = excelExportProperties.dataSource;\n }\n excelExportProperties = _this.manipulateExportProperties(excelExportProperties, dataSource, e);\n return _this.parent.grid.excelExportModule.Map(_this.parent.grid, excelExportProperties, isMultipleExport, workbook, isCsv, isBlob).then(function (book) {\n if (customData != null) {\n excelExportProperties.dataSource = customData;\n }\n else {\n delete excelExportProperties.dataSource;\n }\n resolve(book);\n });\n });\n });\n };\n ExcelExport.prototype.generateQuery = function (query, property) {\n if (!isNullOrUndefined(property) && property.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n property.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n ExcelExport.prototype.manipulateExportProperties = function (property, dtSrc, queryResult) {\n //count not required for this query\n var args = Object();\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n if (!isNullOrUndefined(property) && !isNullOrUndefined(property.exportType)) {\n setValue('exportType', property.exportType, args);\n }\n if (!this.isLocal()) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getObject('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!this.isLocal()) {\n this.parent.flatData = [];\n }\n if (property && property.dataSource && this.isLocal()) {\n var flatsData = this.parent.flatData;\n var dataSrc = property.dataSource instanceof DataManager ? property.dataSource.dataSource.json : property.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatsData;\n }\n property = isNullOrUndefined(property) ? Object() : property;\n property.dataSource = new DataManager({ json: dtSrc });\n return property;\n };\n /**\n * TreeGrid Excel Export cell modifier\n *\n * @param {ExcelQueryCellInfoEventArgs} args - current cell details\n * @hidden\n * @returns {void}\n */\n ExcelExport.prototype.excelQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = args.data;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.indent = pad;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('excelQueryCellInfo', args);\n };\n ExcelExport.prototype.exportRowDataBound = function (excelRow) {\n if (excelRow.type === 'excel') {\n var excelrowobj = excelRow.rowObj.data;\n var filtercolumnlength = this.parent.grid.filterSettings.columns.length;\n var rowlength = excelRow.excelRows.length;\n var rowlevel = excelrowobj.level;\n if (excelrowobj.parentItem && getParentData(this.parent, excelrowobj.parentItem.uniqueID, Boolean(filtercolumnlength))) {\n var expandedStatus = false;\n var sublevelState = false;\n var state = getExpandStatus(this.parent, excelrowobj, this.parent.parentData);\n if (this.isCollapsedStatePersist && (!state || !this.parent.isLocalData)) {\n expandedStatus = true;\n sublevelState = excelrowobj.expanded ? false : true;\n }\n excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel, isCollapsed: sublevelState,\n isHidden: expandedStatus };\n }\n else if (excelrowobj.hasChildRecords && isNullOrUndefined(excelrowobj.parentItem)) {\n excelRow.excelRows[rowlength - 1].grouping = { outlineLevel: rowlevel };\n }\n }\n };\n /* eslint-disable-next-line */\n ExcelExport.prototype.finalPageSetup = function (workbook) {\n for (var i = 0; i < workbook.worksheets.length; i++) {\n if (workbook.worksheets[i].rows) {\n workbook.worksheets[i].pageSetup = { isSummaryRowBelow: false };\n }\n }\n };\n ExcelExport.prototype.isLocal = function () {\n return !isRemoteData(this.parent) && isOffline(this.parent);\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { getObject, PdfExport as GridPdf, Grid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline } from '../utils';\nimport { isNullOrUndefined, setValue, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as event from '../base/constant';\n/**\n * TreeGrid PDF Export module\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for PDF export module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function PdfExport(parent) {\n Grid.Inject(GridPdf);\n this.parent = parent;\n this.dataResults = {};\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} PdfExport module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.addEventListener = function () {\n this.parent.on('pdfCellInfo', this.pdfQueryCellInfo, this);\n this.parent.on('updateResults', this.updatePdfResultModel, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('pdfCellInfo', this.pdfQueryCellInfo);\n this.parent.off('updateResults', this.updatePdfResultModel);\n };\n /**\n * To destroy the PDF Export\n *\n * @returns {void}\n * @hidden\n */\n PdfExport.prototype.destroy = function () {\n this.removeEventListener();\n };\n PdfExport.prototype.updatePdfResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n PdfExport.prototype.Map = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n var dtSrc = this.parent.dataSource;\n var prop = Object();\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('cancel', false, prop);\n return new Promise(function (resolve) {\n var dm = isLocal && !(dtSrc instanceof DataManager) ? new DataManager(dtSrc)\n : _this.parent.dataSource;\n var query = new Query();\n if (!isLocal) {\n query = _this.generateQuery(query);\n setValue('query', query, prop);\n }\n _this.parent.trigger(event.beforePdfExport, extend(prop, pdfExportProperties));\n if (getObject('cancel', prop)) {\n return null;\n }\n dm.executeQuery(query).then(function (e) {\n var customsData = null;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n customsData = pdfExportProperties.dataSource;\n }\n pdfExportProperties = _this.manipulatePdfProperties(pdfExportProperties, dtSrc, e);\n return _this.parent.grid.pdfExportModule.Map(_this.parent.grid, pdfExportProperties, isMultipleExport, pdfDoc, isBlob).then(function (document) {\n if (customsData != null) {\n pdfExportProperties.dataSource = customsData;\n }\n else {\n delete pdfExportProperties.dataSource;\n }\n resolve(document);\n });\n });\n });\n };\n PdfExport.prototype.generateQuery = function (query, prop) {\n if (!isNullOrUndefined(prop) && prop.exportType === 'CurrentPage'\n && this.parent.allowPaging) {\n prop.exportType = 'AllPages';\n query.addParams('ExportType', 'CurrentPage');\n query.where(this.parent.parentIdMapping, 'equal', null);\n query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);\n }\n return query;\n };\n PdfExport.prototype.manipulatePdfProperties = function (prop, dtSrc, queryResult) {\n var args = {};\n //count not required for this query\n var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);\n setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);\n setValue('isExport', true, args);\n setValue('isPdfExport', true, args);\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.isCollapsedStatePersist)) {\n setValue('isCollapsedStatePersist', prop.isCollapsedStatePersist, args);\n }\n if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.exportType)) {\n setValue('exportType', prop.exportType, args);\n }\n if (!isLocal) {\n this.parent.parentData = [];\n this.parent.dataModule.convertToFlatData(getValue('result', queryResult));\n setValue('expresults', this.parent.flatData, args);\n }\n this.parent.notify('dataProcessor', args);\n //args = this.parent.dataModule.dataProcessor(args);\n args = this.dataResults;\n dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;\n if (!isLocal) {\n this.parent.flatData = [];\n }\n if (prop && prop.dataSource && isLocal) {\n var flatDatas = this.parent.flatData;\n var dataSrc = prop.dataSource instanceof DataManager ? prop.dataSource.dataSource.json : prop.dataSource;\n this.parent.dataModule.convertToFlatData(dataSrc);\n dtSrc = this.parent.flatData;\n this.parent.flatData = flatDatas;\n }\n prop = isNullOrUndefined(prop) ? {} : prop;\n prop.dataSource = new DataManager({ json: dtSrc });\n return prop;\n };\n /**\n * TreeGrid PDF Export cell modifier\n *\n * @param {PdfQueryCellInfoEventArgs} args - Current cell details\n * @hidden\n * @returns {void}\n */\n PdfExport.prototype.pdfQueryCellInfo = function (args) {\n if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n var style = {};\n var data = getObject('data', args);\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n style.paragraphIndent = pad * 3;\n args.style = style;\n }\n this.parent.notify('updateResults', args);\n this.parent.trigger('pdfQueryCellInfo', args);\n };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { Grid } from '@syncfusion/ej2-grids';\nimport { Page as GridPage } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { getValue, isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * The `Page` module is used to render pager and handle paging action.\n *\n * @hidden\n */\nvar Page = /** @class */ (function () {\n function Page(parent) {\n Grid.Inject(GridPage);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.addEventListener = function () {\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandPagedchilds, this);\n this.parent.on(events.pagingActions, this.pageAction, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandPagedchilds);\n this.parent.off(events.pagingActions, this.pageAction);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Pager module name\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.parent.grid.pagerModule.refresh();\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.parent.grid.pagerModule.goToPage(pageNo);\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n this.parent.grid.pagerModule.updateExternalMessage(message);\n };\n /**\n * @param {{action: string, row: HTMLTableRowElement, record: ITreeData, args: RowCollapsedEventArgs}} rowDetails - Expand Collapse details arguments\n * @param {string} rowDetails.action - Expand Collapse action type\n * @param {HTMLTableRowElement} rowDetails.row - Row element\n * @param {ITreeData} rowDetails.record - Row object data\n * @param {RowCollapsedEventArgs} rowDetails.args - Expand Collapse event arguments\n * @hidden\n * @returns {void}\n */\n Page.prototype.collapseExpandPagedchilds = function (rowDetails) {\n rowDetails.record.expanded = rowDetails.action === 'collapse' ? false : true;\n if (this.parent.enableImmutableMode) {\n var primaryKeyField_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var record = this.parent.flatData.filter(function (e) {\n return e[primaryKeyField_1] === rowDetails.record[primaryKeyField_1];\n });\n if (record.length) {\n record[0].expanded = rowDetails.record.expanded;\n }\n }\n var ret = {\n result: this.parent.flatData,\n row: rowDetails.row,\n action: rowDetails.action,\n record: rowDetails.record,\n count: this.parent.flatData.length\n };\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret);\n if (this.parent.enableImmutableMode) {\n var row = 'row';\n var action = 'action';\n var targetEle = void 0;\n if (ret[action] === 'collapse') {\n targetEle = ret[row].getElementsByClassName('e-treegridexpand')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridexpand');\n addClass([targetEle], 'e-treegridcollapse');\n }\n }\n else if (ret[action] === 'expand') {\n targetEle = ret[row].getElementsByClassName('e-treegridcollapse')[0];\n if (!isNullOrUndefined(targetEle)) {\n removeClass([targetEle], 'e-treegridcollapse');\n addClass([targetEle], 'e-treegridexpand');\n }\n }\n }\n };\n Page.prototype.pageRoot = function (pagedResults, temp, result) {\n var newResults = isNullOrUndefined(result) ? [] : result;\n var _loop_1 = function (t) {\n newResults.push(temp[t]);\n var res = [];\n if (temp[t].hasChildRecords) {\n res = pagedResults.filter(function (e) {\n return temp[t].uniqueID === e.parentUniqueID;\n });\n newResults = this_1.pageRoot(pagedResults, res, newResults);\n }\n };\n var this_1 = this;\n for (var t = 0; t < temp.length; t++) {\n _loop_1(t);\n }\n return newResults;\n };\n Page.prototype.pageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n if (this.parent.pageSettings.pageSizeMode === 'Root') {\n var temp = [];\n var propname = (this.parent.grid.filterSettings.columns.length > 0) &&\n (this.parent.filterSettings.hierarchyMode === 'Child' || this.parent.filterSettings.hierarchyMode === 'None') ?\n 'filterLevel' : 'level';\n var query = new Query().where(propname, 'equal', 0);\n temp = dm.executeLocal(query);\n pageingDetails.count = temp.length;\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n temp = dm.executeLocal(query);\n var newResults = this.pageRoot(pageingDetails.result, temp);\n pageingDetails.result = newResults;\n }\n else {\n var dm_1 = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents_1 = dm_1.executeLocal(new Query().where(expanded));\n var visualData = void 0;\n if (isFilterChildHierarchy(this.parent) && ((this.parent.searchSettings.key !== this.parent.grid.searchSettings.key) ||\n (this.parent.filterSettings.columns.length !== this.parent.grid.filterSettings.columns.length))) {\n visualData = parents_1;\n }\n else {\n visualData = parents_1.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents_1);\n });\n }\n pageingDetails.count = visualData.length;\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (visualData.length < (current * size)) {\n current = (Math.floor(visualData.length / size)) + ((visualData.length % size) ? 1 : 0);\n current = current ? current : 1;\n this.parent.grid.setProperties({ pageSettings: { currentPage: current } }, true);\n }\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm_1.dataSource.json = visualData;\n pageingDetails.result = dm_1.executeLocal(query);\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n return Page;\n}());\nexport { Page };\n","import { Grid, Toolbar as tool } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Toolbar Module for TreeGrid\n *\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent) {\n Grid.Inject(tool);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Toolbar module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.rowSelected, this.refreshToolbar, this);\n this.parent.on(events.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.toolbarClick, this.toolbarClickHandler);\n };\n Toolbar.prototype.refreshToolbar = function (args) {\n var tObj = this.parent;\n if (args.row.rowIndex === 0 || tObj.getSelectedRecords().length > 1) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent', tObj.element.id + '_gridcontrol_outdent'], false);\n }\n else {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex])) {\n if (!isNullOrUndefined(tObj.getCurrentViewRecords()[args.row.rowIndex]) &&\n (tObj.getCurrentViewRecords()[args.row.rowIndex].level >\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level)) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], false);\n }\n else {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level ===\n tObj.getCurrentViewRecords()[args.row.rowIndex - 1].level) {\n this.enableItems([tObj.element.id + '_gridcontrol_indent'], true);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level === 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], false);\n }\n if (tObj.getCurrentViewRecords()[args.row.rowIndex].level !== 0) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n }\n }\n if (args.row.rowIndex === 0 && !isNullOrUndefined(args.data.parentItem)) {\n this.enableItems([tObj.element.id + '_gridcontrol_outdent'], true);\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var tObj = this.parent;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.grid.editSettings.mode === 'Batch' &&\n args.item.id === this.parent.grid.element.id + '_update') {\n args.cancel = true;\n this.parent.grid.editModule.saveCell();\n }\n if (args.item.id === this.parent.grid.element.id + '_expandall') {\n this.parent.expandAll();\n }\n if (args.item.id === this.parent.grid.element.id + '_collapseall') {\n this.parent.collapseAll();\n }\n if (args.item.id === tObj.grid.element.id + '_indent' && tObj.getSelectedRecords().length) {\n var record = tObj.getCurrentViewRecords()[tObj.getSelectedRowIndexes()[0] - 1];\n var dropIndex = void 0;\n if (record.level > tObj.getSelectedRecords()[0].level) {\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === record.parentItem.taskData) {\n dropIndex = i;\n }\n }\n }\n else {\n dropIndex = tObj.getSelectedRowIndexes()[0] - 1;\n }\n tObj.reorderRows([tObj.getSelectedRowIndexes()[0]], dropIndex, 'child');\n }\n if (args.item.id === tObj.grid.element.id + '_outdent' && tObj.getSelectedRecords().length) {\n var index = tObj.getSelectedRowIndexes()[0];\n var dropIndex = void 0;\n var parentItem = tObj.getSelectedRecords()[0].parentItem;\n for (var i = 0; i < tObj.getCurrentViewRecords().length; i++) {\n if (tObj.getCurrentViewRecords()[i].taskData === parentItem.taskData) {\n dropIndex = i;\n }\n }\n tObj.reorderRows([index], dropIndex, 'below');\n }\n };\n /**\n * Gets the toolbar of the TreeGrid.\n *\n * @returns {Element} - Returns Toolbar element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.parent.grid.toolbarModule.getToolbar();\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n this.parent.grid.toolbarModule.enableItems(items, isEnable);\n };\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getObject, calculateAggregate, Aggregate as GridAggregate, Grid, appendChildren } from '@syncfusion/ej2-grids';\nimport { findParentRecords } from '../utils';\nimport { isNullOrUndefined, setValue, createElement, extend } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Aggregate module\n *\n * @hidden\n */\nvar Aggregate = /** @class */ (function () {\n /**\n * Constructor for Aggregate module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Aggregate(parent) {\n Grid.Inject(GridAggregate);\n this.parent = parent;\n this.flatChildRecords = [];\n this.summaryQuery = [];\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Summary module name\n */\n Aggregate.prototype.getModuleName = function () {\n return 'summary';\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n };\n /**\n * Function to calculate summary values\n *\n * @param {QueryOptions[]} summaryQuery - DataManager query for aggregate operations\n * @param {Object[]} filteredData - Filtered data collection\n * @param {boolean} isSort - Specified whether sorting operation performed\n * @hidden\n * @returns {Object[]} - return flat records with summary values\n */\n Aggregate.prototype.calculateSummaryValue = function (summaryQuery, filteredData, isSort) {\n this.summaryQuery = summaryQuery;\n var parentRecord;\n var parentDataLength = Object.keys(filteredData).length;\n var parentData = [];\n for (var p = 0, len = parentDataLength; p < len; p++) {\n var summaryRow = getObject('isSummaryRow', filteredData[p]);\n if (!summaryRow) {\n parentData.push(filteredData[p]);\n }\n }\n var parentRecords = findParentRecords(parentData);\n var flatRecords = parentData.slice();\n var summaryLength = Object.keys(this.parent.aggregates).length;\n var dataLength = Object.keys(parentRecords).length;\n var childRecordsLength;\n var columns = this.parent.getColumns();\n if (this.parent.aggregates.filter(function (x) { return x.showChildSummary; }).length) {\n for (var i = 0, len = dataLength; i < len; i++) {\n parentRecord = parentRecords[i];\n childRecordsLength = this.getChildRecordsLength(parentRecord, flatRecords);\n if (childRecordsLength) {\n var _loop_1 = function (summaryRowIndex, len_1) {\n var item = void 0;\n item = {};\n for (var i_1 = 0; i_1 < columns.length; i_1++) {\n var field = (isNullOrUndefined(getObject('field', columns[i_1]))) ?\n columns[i_1] : getObject('field', (columns[i_1]));\n item[field] = null;\n }\n item = this_1.createSummaryItem(item, this_1.parent.aggregates[summaryRowIndex - 1]);\n if (this_1.parent.aggregates[summaryRowIndex - 1].showChildSummary) {\n var idx_1;\n flatRecords.map(function (e, i) {\n if (e.uniqueID === parentRecord.uniqueID) {\n idx_1 = i;\n return;\n }\n });\n var currentIndex = idx_1 + childRecordsLength + summaryRowIndex;\n var summaryParent = extend({}, parentRecord);\n delete summaryParent.childRecords;\n delete summaryParent[this_1.parent.childMapping];\n setValue('parentItem', summaryParent, item);\n var level = getObject('level', summaryParent);\n setValue('level', level + 1, item);\n setValue('isSummaryRow', true, item);\n setValue('parentUniqueID', summaryParent.uniqueID, item);\n if (isSort) {\n var childRecords = getObject('childRecords', parentRecord);\n if (childRecords.length) {\n childRecords.push(item);\n }\n }\n flatRecords.splice(currentIndex, 0, item);\n }\n else {\n return \"continue\";\n }\n };\n var this_1 = this;\n for (var summaryRowIndex = 1, len_1 = summaryLength; summaryRowIndex <= len_1; summaryRowIndex++) {\n _loop_1(summaryRowIndex, len_1);\n }\n this.flatChildRecords = [];\n }\n }\n }\n else {\n var items = {};\n for (var columnIndex = 0, length_1 = columns.length; columnIndex < length_1; columnIndex++) {\n var fields = isNullOrUndefined(getObject('field', columns[columnIndex])) ?\n columns[columnIndex] : getObject('field', columns[columnIndex]);\n items[fields] = null;\n }\n for (var summaryRowIndex = 1, length_2 = summaryLength; summaryRowIndex <= length_2; summaryRowIndex++) {\n this.createSummaryItem(items, this.parent.aggregates[summaryRowIndex - 1]);\n }\n }\n return flatRecords;\n };\n Aggregate.prototype.getChildRecordsLength = function (parentData, flatData) {\n var recordLength = Object.keys(flatData).length;\n var record;\n for (var i = 0, len = recordLength; i < len; i++) {\n record = flatData[i];\n var parent_1 = isNullOrUndefined(record.parentItem) ? null :\n flatData.filter(function (e) { return e.uniqueID === record.parentItem.uniqueID; })[0];\n if (parentData === parent_1) {\n this.flatChildRecords.push(record);\n var hasChild = getObject('hasChildRecords', record);\n if (hasChild) {\n this.getChildRecordsLength(record, flatData);\n }\n else {\n continue;\n }\n }\n }\n return this.flatChildRecords.length;\n };\n Aggregate.prototype.createSummaryItem = function (itemData, summary) {\n var summaryColumnLength = Object.keys(summary.columns).length;\n for (var i = 0, len = summaryColumnLength; i < len; i++) {\n var displayColumn = isNullOrUndefined(summary.columns[i].columnName) ? summary.columns[i].field :\n summary.columns[i].columnName;\n var keys = Object.keys(itemData);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === displayColumn) {\n if (this.flatChildRecords.length) {\n itemData[key] = this.getSummaryValues(summary.columns[i], this.flatChildRecords);\n }\n else if (this.parent.isLocalData) {\n var data = this.parent.dataSource instanceof DataManager ? this.parent.dataSource.dataSource.json\n : this.parent.flatData;\n itemData[key] = this.getSummaryValues(summary.columns[i], data);\n }\n }\n else {\n continue;\n }\n }\n }\n return itemData;\n };\n Aggregate.prototype.getSummaryValues = function (summaryColumn, summaryData) {\n var qry = new Query();\n var single = {};\n var helper = {};\n var type = !isNullOrUndefined(summaryColumn.field) ?\n this.parent.getColumnByField(summaryColumn.field).type : undefined;\n summaryColumn.setPropertiesSilent({ format: this.getFormatFromType(summaryColumn.format, type) });\n summaryColumn.setFormatter(this.parent.grid.locale);\n var formatFn = summaryColumn.getFormatter() || (function () { return function (a) { return a; }; })();\n summaryColumn.setTemplate(helper);\n var tempObj = summaryColumn.getTemplate(2);\n qry.queries = this.summaryQuery;\n qry.requiresCount();\n var sumData = new DataManager(summaryData).executeLocal(qry);\n var types = summaryColumn.type;\n var summaryKey;\n types = [summaryColumn.type];\n for (var i = 0; i < types.length; i++) {\n summaryKey = types[i];\n var key = summaryColumn.field + ' - ' + types[i].toLowerCase();\n var val = types[i] !== 'Custom' ? getObject('aggregates', sumData) :\n calculateAggregate(types[i], sumData, summaryColumn, this.parent);\n var disp = summaryColumn.columnName;\n var value_1 = types[i] !== 'Custom' ? val[key] : val;\n single[disp] = single[disp] || {};\n single[disp][key] = value_1;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(value_1) : ' ';\n }\n helper.format = summaryColumn.getFormatter();\n var cellElement = createElement('td', {\n className: 'e-summary'\n });\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property, '', null, null, cellElement);\n this.parent[renderReactTemplates]();\n }\n else {\n appendChildren(cellElement, tempObj.fn(single[summaryColumn.columnName], this.parent, tempObj.property));\n }\n var value = single[summaryColumn.columnName][summaryKey];\n var summaryValue;\n if (cellElement.innerHTML.indexOf(value) === -1) {\n summaryValue = cellElement.innerHTML + value;\n return summaryValue;\n }\n else {\n return cellElement.innerHTML;\n }\n };\n Aggregate.prototype.getFormatFromType = function (summaryformat, type) {\n if (isNullOrUndefined(type) || typeof summaryformat !== 'string') {\n return summaryformat;\n }\n var obj;\n switch (type) {\n case 'number':\n obj = { format: summaryformat };\n break;\n case 'datetime':\n obj = { type: 'dateTime', skeleton: summaryformat };\n break;\n case 'date':\n obj = { type: type, skeleton: summaryformat };\n break;\n }\n return obj;\n };\n /**\n * To destroy the Aggregate module\n *\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Aggregate;\n}());\nexport { Aggregate };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Sort as GridSort, Grid, getActualProperties } from '@syncfusion/ej2-grids';\nimport { getParentData } from '../utils';\n/**\n * Internal dataoperations for TreeGrid\n *\n * @hidden\n */\nvar Sort = /** @class */ (function () {\n function Sort(grid) {\n Grid.Inject(GridSort);\n this.parent = grid;\n this.taskIds = [];\n this.flatSortedData = [];\n this.storedIndex = -1;\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Sort module name\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n this.parent.on('updateModel', this.updateModel, this);\n this.parent.on('createSort', this.createdSortedRecords, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updateModel', this.updateModel);\n this.parent.off('createSort', this.createdSortedRecords);\n };\n Sort.prototype.createdSortedRecords = function (sortParams) {\n var data = sortParams.modifiedData;\n var srtQry = sortParams.srtQry;\n this.iterateSort(data, srtQry);\n this.storedIndex = -1;\n sortParams.modifiedData = this.flatSortedData;\n this.flatSortedData = [];\n };\n Sort.prototype.iterateSort = function (data, srtQry) {\n for (var d = 0; d < data.length; d++) {\n if (this.parent.grid.filterSettings.columns.length > 0 || this.parent.grid.searchSettings.key !== '') {\n if (!isNullOrUndefined(getParentData(this.parent, data[d].uniqueID, true))) {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[d];\n }\n }\n else {\n this.storedIndex++;\n this.flatSortedData[this.storedIndex] = data[d];\n }\n if (data[d].hasChildRecords) {\n var childSort = (new DataManager(data[d].childRecords).executeLocal(srtQry));\n this.iterateSort(childSort, srtQry);\n }\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n this.parent.grid.sortColumn(columnName, direction, isMultiSort);\n };\n Sort.prototype.removeSortColumn = function (field) {\n this.parent.grid.removeSortColumn(field);\n };\n /**\n * The function used to update sortSettings of TreeGrid.\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n this.parent.setProperties({ sortSettings: getActualProperties(this.parent.grid.sortSettings) }, true);\n };\n /**\n * Clears all the sorted columns of the TreeGrid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n this.parent.grid.clearSorting();\n this.updateModel();\n };\n /**\n * Destroys the Sorting of TreeGrid.\n *\n * @function destroy\n * @returns {void}\n */\n Sort.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Sort;\n}());\nexport { Sort };\n","import { Grid, ColumnMenu as GridColumnMenu } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnMenu module\n *\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function ColumnMenu(parent) {\n Grid.Inject(GridColumnMenu);\n this.parent = parent;\n }\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.parent.grid.columnMenuModule.getColumnMenu();\n };\n ColumnMenu.prototype.destroy = function () {\n //this.parent.grid.columnMenuModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnMenu module name\n */\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n return ColumnMenu;\n}());\nexport { ColumnMenu };\n","import { Grid, ContextMenu as cmenu } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, select } from '@syncfusion/ej2-base';\n/**\n * ContextMenu Module for TreeGrid\n *\n * @hidden\n */\nvar ContextMenu = /** @class */ (function () {\n function ContextMenu(parent) {\n Grid.Inject(cmenu);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on('contextMenuOpen', this.contextMenuOpen, this);\n this.parent.on('contextMenuClick', this.contextMenuClick, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n ContextMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('contextMenuOpen', this.contextMenuOpen);\n this.parent.off('contextMenuClick', this.contextMenuClick);\n };\n ContextMenu.prototype.contextMenuOpen = function (args) {\n var addRow = select('#' + this.parent.element.id + '_gridcontrol_cmenu_AddRow', args.element);\n var editRecord = select('#' + this.parent.element.id + '_gridcontrol_cmenu_Edit', args.element);\n if (addRow) {\n if (this.parent.grid.editSettings.allowAdding === false) {\n addRow.style.display = 'none';\n }\n else {\n addRow.style.display = 'block';\n }\n }\n if ((this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch')\n && !(isNullOrUndefined(editRecord)) && !(editRecord.classList.contains('e-menu-hide'))) {\n editRecord.style.display = 'none';\n }\n };\n ContextMenu.prototype.contextMenuClick = function (args) {\n if (args.item.id === 'Above' || args.item.id === 'Below' || args.item.id === 'Child') {\n this.parent.notify('savePreviousRowPosition', args);\n this.parent.setProperties({ editSettings: { newRowPosition: args.item.id } }, true);\n this.parent.addRecord();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ContextMenu module name\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n ContextMenu.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * Gets the context menu element from the TreeGrid.\n *\n * @returns {Element} Return Context Menu root element.\n */\n ContextMenu.prototype.getContextMenu = function () {\n return this.parent.grid.contextMenuModule.getContextMenu();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","import { isNullOrUndefined, extend, setValue, getValue, merge } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, extendArray } from '../utils';\nimport { getUid } from '@syncfusion/ej2-grids';\nimport { updateParentRow, editAction } from './crud-actions';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent) {\n this.batchChildCount = 0;\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.batchAddedRecords = [];\n this.batchDeletedRecords = [];\n this.batchAddRowRecord = [];\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.batchRecords = [];\n this.currentViewRecords = [];\n this.isAdd = false;\n this.addEventListener();\n }\n BatchEdit.prototype.addEventListener = function () {\n this.parent.on(events.cellSaved, this.cellSaved, this);\n this.parent.on(events.batchAdd, this.batchAdd, this);\n this.parent.on(events.beforeBatchAdd, this.beforeBatchAdd, this);\n this.parent.on(events.batchSave, this.batchSave, this);\n this.parent.on(events.beforeBatchDelete, this.beforeBatchDelete, this);\n this.parent.on(events.beforeBatchSave, this.beforeBatchSave, this);\n this.parent.on('batchPageAction', this.batchPageAction, this);\n this.parent.on('batchCancelAction', this.batchCancelAction, this);\n this.parent.grid.on('immutable-batch-cancel', this.immutableBatchAction, this);\n this.parent.grid.on('next-cell-index', this.nextCellIndex, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cellSaved, this.cellSaved);\n this.parent.off(events.batchAdd, this.batchAdd);\n this.parent.off(events.batchSave, this.batchSave);\n this.parent.off(events.beforeBatchAdd, this.beforeBatchAdd);\n this.parent.off(events.beforeBatchDelete, this.beforeBatchDelete);\n this.parent.off(events.beforeBatchSave, this.beforeBatchSave);\n this.parent.off('batchPageAction', this.batchPageAction);\n this.parent.off('batchCancelAction', this.batchCancelAction);\n this.parent.grid.off('immutable-batch-cancel', this.immutableBatchAction);\n this.parent.grid.off('next-cell-index', this.nextCellIndex);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {Object[]} Returns modified records in batch editing.\n */\n BatchEdit.prototype.getBatchRecords = function () {\n return this.batchRecords;\n };\n /**\n * @hidden\n * @returns {number} Returns index of newly add row\n */\n BatchEdit.prototype.getAddRowIndex = function () {\n return this.addRowIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns selected row index\n */\n BatchEdit.prototype.getSelectedIndex = function () {\n return this.selectedIndex;\n };\n /**\n * @hidden\n * @returns {number} Returns newly added child count\n */\n BatchEdit.prototype.getBatchChildCount = function () {\n return this.batchChildCount;\n };\n BatchEdit.prototype.batchPageAction = function () {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var index;\n if (!isNullOrUndefined(this.batchAddedRecords) && this.batchAddedRecords.length) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.cellSaved = function (args) {\n var actualCellIndex = args.cell.cellIndex;\n var frozenCols = this.parent.frozenColumns || this.parent.getFrozenColumns();\n if (frozenCols && args.columnObject.index > frozenCols) {\n actualCellIndex = actualCellIndex + frozenCols;\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n var colCount = this.parent.getFrozenLeftColumnsCount() + actualCellIndex;\n if (colCount === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n }\n else if (actualCellIndex === this.parent.treeColumnIndex) {\n this.parent.renderModule.cellRender({ data: args.rowData, cell: args.cell,\n column: this.parent.grid.getColumnByIndex(args.cell.cellIndex)\n });\n }\n if (this.isAdd && this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var added = void 0;\n var level = 'level';\n var primaryKey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var currentDataIndex = void 0;\n var indexvalue = void 0;\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var parentRecord = this.selectedIndex > -1 ? this.batchRecords[this.addRowIndex][parentItem] : null;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentIdMapping = void 0;\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Top' || this.selectedIndex === -1 ? 0 :\n this.parent.editSettings.newRowPosition === 'Above' ? this.addRowIndex\n : this.addRowIndex + 1;\n rowObjectIndex = this.getActualRowObjectIndex(rowObjectIndex);\n if (this.newBatchRowAdded) {\n if (this.batchRecords.length) {\n idMapping = this.batchRecords[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = this.batchRecords[this.addRowIndex][this.parent.parentIdMapping];\n if (this.batchRecords[this.addRowIndex][parentItem]) {\n parentUniqueID = this.batchRecords[this.addRowIndex][parentItem][uniqueID];\n }\n }\n this.batchAddedRecords = extendArray(this.batchAddedRecords);\n this.batchAddRowRecord = extendArray(this.batchAddRowRecord);\n this.batchAddRowRecord.push(this.batchRecords[this.addRowIndex]);\n added = this.parent.grid.getRowsObject()[rowObjectIndex].changes;\n added.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + added.uniqueID, added, this.parent);\n if (!Object.prototype.hasOwnProperty.call(added, 'level')) {\n this.batchIndex = this.selectedIndex === -1 ? 0 : this.batchIndex;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n added.primaryParent = parentRecord;\n if (this.selectedIndex > -1) {\n added.parentItem = extend({}, this.batchRecords[this.addRowIndex]);\n added.parentUniqueID = added.parentItem.uniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n added.level = added.parentItem.level + 1;\n added.index = this.batchIndex;\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = idMapping;\n }\n updateParentRow(primaryKey_1, added.parentItem, 'add', this.parent, this.isSelfReference, added);\n }\n }\n else if ((this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below')\n && !isNullOrUndefined(this.batchRecords[this.addRowIndex])) {\n added.level = this.batchRecords[this.addRowIndex][level];\n if (added.level && this.selectedIndex > -1) {\n added.parentItem = parentRecord;\n added.parentUniqueID = parentUniqueID;\n delete added.parentItem.childRecords;\n delete added.parentItem[this.parent.childMapping];\n }\n added.index = this.parent.editSettings.newRowPosition === 'Below' ? this.batchIndex : this.batchIndex - 1;\n if (this.parent.editSettings.newRowPosition === 'Below' && this.selectedIndex > -1) {\n var childRecordCount = findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n var record = findChildrenRecords(this.batchRecords[this.addRowIndex])[childRecordCount - 1];\n record = isNullOrUndefined(record) ? this.batchRecords[this.addRowIndex] : record;\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.parent.editSettings.newRowPosition === 'Above' && this.selectedIndex > -1) {\n var record = this.batchRecords[this.addRowIndex];\n currentDataIndex = data.map(function (e) { return e[primaryKey_1]; }).indexOf(record[primaryKey_1]);\n }\n if (this.isSelfReference) {\n added[this.parent.parentIdMapping] = parentIdMapping;\n }\n }\n added.index = added.index === -1 ? 0 : added.index;\n added.hasChildRecords = false;\n added.childRecords = [];\n this.batchRecords.splice(added.index, 0, added);\n this.currentViewRecords.splice(added.index, 0, added);\n if (currentDataIndex) {\n indexvalue = currentDataIndex;\n }\n else {\n indexvalue = added.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Above') {\n indexvalue = added.index === 0 ? indexvalue : indexvalue + 1;\n }\n data.splice(indexvalue, 0, added);\n this.batchAddedRecords.push(added);\n }\n this.parent.grid.getRowsObject()[rowObjectIndex].data = added;\n this.newBatchRowAdded = false;\n }\n if (this.parent.frozenColumns || this.parent.getFrozenColumns()\n && this.parent.grid.getRowsObject()[rowObjectIndex].edit === 'add') {\n merge(this.currentViewRecords[rowObjectIndex], this.parent.grid.getRowsObject()[rowObjectIndex].changes);\n }\n }\n };\n BatchEdit.prototype.beforeBatchAdd = function (e) {\n var isTabLastRow = 'isTabLastRow';\n if (this.parent.editSettings.mode === 'Cell' && this.parent.editModule[isTabLastRow]) {\n e.cancel = true;\n this.parent.editModule[isTabLastRow] = false;\n return;\n }\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n };\n BatchEdit.prototype.batchAdd = function (e) {\n if (this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.isAdd = true;\n this.newBatchRowAdded = true;\n var actualIndex = 0;\n if (!this.batchRecords.length) {\n this.batchAddedRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n if (this.parent.editSettings.newRowPosition !== 'Top') {\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n records = this.batchRecords;\n }\n this.updateChildCount(records);\n this.parent.notify(events.beginAdd, {});\n this.batchChildCount = 0;\n }\n this.updateRowIndex();\n // update focus module, need to refix this once grid source modified.\n var focusModule = getValue('focusModule', this.parent.grid);\n var table = this.parent.getContentTable();\n if (this.parent.getBatchChanges()[this.deletedRecords].length && this.parent.editSettings.newRowPosition === 'Above') {\n actualIndex = e.row.rowIndex;\n focusModule.getContent().matrix.matrix = this.matrix;\n }\n else {\n actualIndex = table.getElementsByClassName('e-batchrow')[0].rowIndex;\n // if (this.parent.frozenRows || this.parent.frozenColumns) {\n // actualIndex = this.batchIndex;\n // }\n }\n focusModule.getContent().matrix.current = [actualIndex, focusModule.getContent().matrix.current[1]];\n }\n };\n BatchEdit.prototype.beforeBatchDelete = function (args) {\n if (!this.batchRecords.length) {\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n }\n var focusModule = getValue('focusModule', this.parent.grid);\n this.matrix = focusModule.getContent().matrix.matrix;\n var row = [];\n var records = [];\n var primarykey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var data;\n var childs;\n var uid;\n if (!isNullOrUndefined(args.row) && this.parent.getSelectedRows().indexOf(args.row) === -1) {\n data = args.rowData;\n childs = findChildrenRecords(data);\n uid = args.row.getAttribute('data-uid');\n }\n else {\n data = this.parent.grid.getSelectedRecords()[this.parent.grid.getSelectedRecords().length - 1];\n childs = findChildrenRecords(data);\n uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n }\n var parentRowIndex = parseInt(this.parent.grid.getRowElementByUID(uid).getAttribute('aria-rowindex'), 10);\n if (childs.length) {\n var totalCount = parentRowIndex + childs.length;\n var firstChildIndex = parentRowIndex + 1;\n for (var i = firstChildIndex; i <= totalCount; i++) {\n row.push(this.parent.grid.getDataRows()[i]);\n if (this.parent.frozenRows || this.parent.frozenColumns || this.parent.getFrozenColumns()) {\n row.push(this.parent.grid.getMovableRows()[i]);\n }\n }\n }\n if (!isNullOrUndefined(data.parentItem)) {\n var parentItem = getParentData(this.parent, data.parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(data);\n parentItem.childRecords.splice(childIndex, 1);\n }\n this.batchDeletedRecords = extendArray(this.batchDeletedRecords);\n this.batchDeletedRecords.push(data);\n }\n childs.push(data);\n records = childs;\n for (var i = 0; i < records.length; i++) {\n var indexvalue = this.batchRecords.map(function (e) { return e[primarykey]; }).indexOf(records[i][primarykey]);\n if (indexvalue !== -1) {\n this.batchRecords.splice(indexvalue, 1);\n }\n }\n for (var i = 0; i < row.length; i++) {\n if (!isNullOrUndefined(row[i])) {\n this.parent.grid.selectionModule.selectedRecords.push(row[i]);\n }\n }\n };\n BatchEdit.prototype.updateRowIndex = function () {\n var rows = this.parent.grid.getDataRows();\n for (var i = 0; i < rows.length; i++) {\n rows[i].setAttribute('aria-rowindex', i.toString());\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var mRows = this.parent.grid.getMovableDataRows();\n var freezeRightRows = this.parent.grid.getFrozenRightDataRows();\n for (var i = 0; i < mRows.length; i++) {\n mRows[i].setAttribute('aria-rowindex', i.toString());\n if (freeze) {\n freezeRightRows[i].setAttribute('aria-rowindex', i.toString());\n }\n }\n }\n };\n BatchEdit.prototype.updateChildCount = function (records) {\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var addedRecords = 'addedRecords';\n var parentItem = this.parent.editSettings.newRowPosition === 'Child' ? 'primaryParent' : 'parentItem';\n for (var i = 0; i < this.parent.getBatchChanges()[addedRecords].length; i++) {\n if (!isNullOrUndefined(this.parent.getBatchChanges()[addedRecords][i][parentItem])) {\n if (this.parent.getBatchChanges()[addedRecords][i][parentItem][primaryKey] === records[this.addRowIndex][primaryKey]) {\n this.batchChildCount = this.batchChildCount + 1;\n }\n }\n }\n };\n BatchEdit.prototype.beforeBatchSave = function (e) {\n var changeRecords = 'changedRecords';\n var deleterecords = 'deletedRecords';\n var changedRecords = e.batchChanges[changeRecords];\n if (e.batchChanges[changeRecords].length) {\n var columnName = void 0;\n for (var i = 0; i < changedRecords.length; i++) {\n editAction({ value: changedRecords[i], action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName);\n }\n }\n if (e.batchChanges[deleterecords].length) {\n var deletedRecords = e.batchChanges[deleterecords];\n var record = deletedRecords;\n for (var i = 0; i < record.length; i++) {\n this.deleteUniqueID(record[i].uniqueID);\n var childs = findChildrenRecords(record[i]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[c].uniqueID);\n }\n e.batchChanges[deleterecords] = e.batchChanges[deleterecords].concat(childs);\n }\n }\n this.isAdd = false;\n };\n BatchEdit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n BatchEdit.prototype.batchCancelAction = function () {\n var targetElement = 'targetElement';\n var index;\n var parentItem = 'parentItem';\n var indexvalue = 'index';\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var childRecords = 'childRecords';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var primaryKey = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (!isNullOrUndefined(this.batchAddedRecords)) {\n for (var i = 0; i < this.batchAddedRecords.length; i++) {\n index = data.map(function (e) { return e[primaryKey]; }).indexOf(this.batchAddedRecords[i][primaryKey]);\n data.splice(index, 1);\n if (this.parent.editSettings.newRowPosition === 'Child') {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchAddedRecords[i][parentItem] ? this.batchAddedRecords[i][parentItem][primaryKey]\n : this.batchAddedRecords[i][primaryKey]);\n if (!isNullOrUndefined(currentViewRecords[index])) {\n var children = currentViewRecords[index][childRecords];\n for (var j = 0; children && j < children.length; j++) {\n if (children[j][primaryKey] === this.batchAddedRecords[i][primaryKey]) {\n currentViewRecords[index][childRecords].splice(j, 1);\n }\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(this.parent[targetElement])) {\n var row = this.parent[targetElement].closest('tr');\n this.parent.collapseRow(row);\n this.parent[targetElement] = null;\n }\n if (!isNullOrUndefined(this.batchDeletedRecords)) {\n for (var i = 0; i < this.batchDeletedRecords.length; i++) {\n if (!isNullOrUndefined(this.batchDeletedRecords[i][parentItem])) {\n index = currentViewRecords.map(function (e) { return e[primaryKey]; })\n .indexOf(this.batchDeletedRecords[i][parentItem][primaryKey]);\n var positionIndex = this.batchDeletedRecords[i][indexvalue] === 0 ? this.batchDeletedRecords[i][indexvalue] :\n this.batchDeletedRecords[i][indexvalue] - 1;\n if (!isNullOrUndefined(currentViewRecords[index])) {\n currentViewRecords[index][childRecords].splice(positionIndex, 0, this.batchDeletedRecords[i]);\n }\n }\n }\n }\n this.batchAddedRecords = this.batchRecords = this.batchAddRowRecord = this.currentViewRecords = [];\n this.batchRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchIndex = 0;\n this.currentViewRecords = extendArray(this.parent.grid.getCurrentViewRecords());\n this.batchDeletedRecords = [];\n this.parent.grid.renderModule.refresh();\n };\n BatchEdit.prototype.batchSave = function (args) {\n if (this.parent.editSettings.mode === 'Batch') {\n var i = void 0;\n var batchChanges = Object.hasOwnProperty.call(args, 'updatedRecords') ? args.updatedRecords : this.parent.getBatchChanges();\n var deletedRecords = 'deletedRecords';\n var addedRecords = 'addedRecords';\n var index = 'index';\n var uniqueID = 'uniqueID';\n var data = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n var currentViewRecords = this.parent.grid.getCurrentViewRecords();\n var primarykey_1 = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var level = 'level';\n var addRecords = batchChanges[addedRecords];\n var parentItem = 'parentItem';\n var selectedIndex = void 0;\n var addRowIndex = void 0;\n var columnName = void 0;\n var addRowRecord = void 0;\n var childRecords = 'childRecords';\n if (addRecords.length > 1 && this.parent.editSettings.newRowPosition !== 'Bottom') {\n addRecords.reverse();\n }\n if (this.parent.editSettings.newRowPosition !== 'Bottom' && !Object.hasOwnProperty.call(args, 'updatedRecords')) {\n data.splice(data.length - addRecords.length, addRecords.length);\n if (!this.parent.allowPaging && data.length !== currentViewRecords.length) {\n if (currentViewRecords.length > addRecords.length) {\n currentViewRecords.splice(currentViewRecords.length - addRecords.length, addRecords.length);\n }\n }\n else {\n var totalRecords = extendArray(data);\n if (totalRecords.length) {\n var startIndex = totalRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(currentViewRecords[0][primarykey_1]);\n var endIndex = startIndex + this.parent.grid.pageSettings.pageSize;\n currentViewRecords = totalRecords.splice(startIndex, endIndex);\n }\n }\n }\n if (this.batchAddRowRecord.length === 0) {\n this.batchAddRowRecord.push(this.parent.flatData[args.index]);\n }\n for (i = 0; i < addRecords.length; i++) {\n var taskData = extend({}, addRecords[i]);\n delete taskData.parentItem;\n delete taskData.uniqueID;\n delete taskData.index;\n delete taskData.level;\n delete taskData.hasChildRecords;\n delete taskData.childRecords;\n delete taskData.parentUniqueID;\n if (!isNullOrUndefined(taskData.primaryParent)) {\n delete taskData.primaryParent;\n }\n addRecords[i].taskData = taskData;\n addRowRecord = this.batchAddRowRecord[i];\n if (isNullOrUndefined(addRowRecord)) {\n addRowRecord = this.batchAddRowRecord[i - 1];\n }\n if (this.isSelfReference) {\n if (!isNullOrUndefined(addRecords[i].parentItem)) {\n updateParentRow(primarykey_1, addRecords[i].parentItem, 'add', this.parent, this.isSelfReference, addRecords[i]);\n }\n }\n if (!isNullOrUndefined(addRowRecord)) {\n addRowIndex = addRowRecord.index;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.parent.editSettings.newRowPosition !== 'Bottom') {\n if (isNullOrUndefined(addRecords[i].parentItem) && this.selectedIndex === -1) {\n selectedIndex = -1;\n addRowRecord = null;\n }\n }\n editAction({ value: addRecords[i], action: 'add' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n selectedIndex = null;\n if (this.parent.editSettings.newRowPosition === 'Child' && !isNullOrUndefined(addRecords[i][parentItem])) {\n var indexValue = currentViewRecords.map(function (e) { return e[primarykey_1]; })\n .indexOf(addRecords[i][parentItem][primarykey_1]);\n var children = currentViewRecords[indexValue][childRecords];\n for (var j = 0; j < children.length; j++) {\n if (children[j][primarykey_1] === addRecords[i][primarykey_1]) {\n currentViewRecords[indexValue][childRecords].splice(j, 1);\n }\n }\n }\n }\n if (batchChanges[deletedRecords].length) {\n for (i = 0; i < batchChanges[deletedRecords].length; i++) {\n editAction({ value: batchChanges[deletedRecords][i], action: 'delete' }, this.parent, this.isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord);\n }\n }\n this.parent.parentData = [];\n for (var i_1 = 0; i_1 < data.length; i_1++) {\n data[i_1][index] = i_1;\n setValue('uniqueIDCollection.' + data[i_1][uniqueID] + '.index', i_1, this.parent);\n if (!data[i_1][level]) {\n this.parent.parentData.push(data[i_1]);\n }\n }\n }\n this.batchAddRowRecord = this.batchAddedRecords = this.batchRecords = this.batchDeletedRecords = this.currentViewRecords = [];\n };\n BatchEdit.prototype.getActualRowObjectIndex = function (index) {\n var rows = this.parent.grid.getDataRows();\n if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && this.selectedIndex > -1) {\n if (!isNullOrUndefined(this.batchRecords[this.addRowIndex]) && this.batchRecords[this.addRowIndex].expanded) {\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(this.batchRecords[this.addRowIndex]).length;\n }\n }\n if (index >= rows.length) {\n index = rows.length - 1;\n }\n this.updateChildCount(this.parent.grid.getCurrentViewRecords());\n if (this.batchChildCount) {\n index += this.batchChildCount;\n }\n this.batchChildCount = 0;\n }\n return index;\n };\n BatchEdit.prototype.immutableBatchAction = function (e) {\n e.args.cancel = true;\n var changes = this.parent.grid.getBatchChanges();\n var addedRecords = [];\n var index = 'index';\n if (Object.keys(changes).length) {\n addedRecords = changes.addedRecords;\n }\n for (var i = 0; i < addedRecords.length; i++) {\n e.rows.splice(addedRecords[i][index], 1);\n }\n };\n BatchEdit.prototype.nextCellIndex = function (args) {\n var index = 'index';\n var rowIndex = 'rowIndex';\n args[index] = this.parent.getSelectedRows()[0][rowIndex];\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","import { Grid, Edit as GridEdit, getUid, getObject, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { parentsUntil } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, extend, setValue, removeClass, addClass, getValue } from '@syncfusion/ej2-base';\nimport { DataManager, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { findChildrenRecords, getParentData, isCountRequired, isRemoteData } from '../utils';\nimport { editAction, updateParentRow } from './crud-actions';\nimport { BatchEdit } from './batch-edit';\n/**\n * TreeGrid Edit Module\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for Edit module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Edit(parent) {\n this.addedRecords = 'addedRecords';\n this.deletedRecords = 'deletedRecords';\n this.prevAriaRowIndex = '-1';\n this.isAddedRowByMethod = false;\n Grid.Inject(GridEdit);\n this.parent = parent;\n this.isSelfReference = !isNullOrUndefined(parent.parentIdMapping);\n this.previousNewRowPosition = null;\n this.internalProperties = {};\n this.batchEditModule = new BatchEdit(this.parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Edit module name\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.addEventListener = function () {\n this.parent.on(events.crudAction, this.crudAction, this);\n this.parent.on(events.beginEdit, this.beginEdit, this);\n this.parent.on(events.beginAdd, this.beginAdd, this);\n this.parent.on(events.recordDoubleClick, this.recordDoubleClick, this);\n this.parent.on(events.cellSave, this.cellSave, this);\n this.parent.on(events.batchCancel, this.batchCancel, this);\n this.parent.grid.on(events.keyPressed, this.keyPressed, this);\n this.parent.grid.on('batchedit-form', this.lastCellTab, this);\n this.parent.grid.on('content-ready', this.contentready, this);\n this.parent.on(events.cellEdit, this.cellEdit, this);\n this.parent.on('actionBegin', this.editActionEvents, this);\n this.parent.on('actionComplete', this.editActionEvents, this);\n this.parent.grid.on(events.doubleTap, this.recordDoubleClick, this);\n this.parent.grid.on('dblclick', this.gridDblClick, this);\n this.parent.grid.on('recordAdded', this.customCellSave, this);\n this.parent.on('savePreviousRowPosition', this.savePreviousRowPosition, this);\n // this.parent.on(events.beforeDataBound, this.beforeDataBound, this);\n this.parent.grid.on(events.beforeStartEdit, this.beforeStartEdit, this);\n this.parent.grid.on(events.beforeBatchCancel, this.beforeBatchCancel, this);\n this.parent.grid.on('reset-edit-props', this.resetIsOnBatch, this);\n this.parent.grid.on('get-row-position', this.getRowPosition, this);\n };\n Edit.prototype.gridDblClick = function (e) {\n this.doubleClickTarget = e.target;\n };\n Edit.prototype.getRowPosition = function (addArgs) {\n addArgs.newRowPosition = this.parent.editSettings.newRowPosition;\n addArgs.addRowIndex = this.addRowIndex;\n addArgs.ariaRowIndex = +this.prevAriaRowIndex;\n };\n Edit.prototype.beforeStartEdit = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n Edit.prototype.beforeBatchCancel = function (args) {\n if (this.parent.editSettings.mode === 'Cell') {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.crudAction);\n this.parent.off(events.beginEdit, this.beginEdit);\n this.parent.off(events.beginAdd, this.beginAdd);\n this.parent.off(events.recordDoubleClick, this.recordDoubleClick);\n this.parent.off(events.batchCancel, this.batchCancel);\n this.parent.grid.off(events.keyPressed, this.keyPressed);\n this.parent.grid.off('batchedit-form', this.lastCellTab);\n this.parent.grid.off('content-ready', this.contentready);\n this.parent.off(events.cellEdit, this.cellEdit);\n this.parent.off('actionBegin', this.editActionEvents);\n this.parent.off('actionComplete', this.editActionEvents);\n this.parent.grid.off('recordAdded', this.customCellSave);\n this.parent.grid.off(events.doubleTap, this.recordDoubleClick);\n this.parent.off('savePreviousRowPosition', this.savePreviousRowPosition);\n this.parent.grid.off(events.beforeStartEdit, this.beforeStartEdit);\n this.parent.grid.off(events.beforeBatchCancel, this.beforeBatchCancel);\n this.parent.grid.off('dblclick', this.gridDblClick);\n this.parent.grid.off('reset-edit-props', this.resetIsOnBatch);\n this.parent.grid.off('get-row-position', this.getRowPosition);\n //this.parent.grid.off('click', this.gridSingleClick);\n };\n /**\n * To destroy the editModule\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {Column[]} cols - Column property Collection\n * @hidden\n * @returns {void}\n */\n Edit.prototype.applyFormValidation = function (cols) {\n this.parent.grid.editModule.applyFormValidation(cols);\n };\n Edit.prototype.editActionEvents = function (args) {\n var eventArgs = getObject('editAction', args);\n var eventName = getObject('name', eventArgs);\n var treeObj = this.parent;\n var adaptor = treeObj.dataSource.adaptor;\n if ((isRemoteData(treeObj) || adaptor instanceof RemoteSaveAdaptor) &&\n (eventArgs.requestType === 'save' && eventArgs.action === 'add') &&\n (treeObj.editSettings.newRowPosition === 'Child' || treeObj.editSettings.newRowPosition === 'Below'\n || treeObj.editSettings.newRowPosition === 'Above')) {\n if (eventName === 'actionBegin') {\n var rowIndex = isNullOrUndefined(eventArgs.row) || !Object.keys(eventArgs.row).length ? this.selectedIndex :\n eventArgs.row.rowIndex - 1;\n var keyData = (!isNullOrUndefined(rowIndex) && rowIndex !== -1) ?\n treeObj.getCurrentViewRecords()[rowIndex][treeObj.getPrimaryKeyFieldNames()[0]] : -1;\n treeObj.grid.query.addParams('relationalKey', keyData);\n }\n else if (eventName === 'actionComplete') {\n var paramsLength = treeObj.grid.query.params.length;\n for (var i = 0; i < paramsLength; i++) {\n if (treeObj.grid.query.params[i].key === 'relationalKey') {\n treeObj.grid.query.params.splice(i);\n }\n }\n }\n }\n if (this.parent.enableInfiniteScrolling && eventName === 'actionComplete') {\n this.infiniteAddAction(eventArgs);\n }\n if (this.parent.editSettings.mode === 'Batch' && eventArgs.requestType === 'paging') {\n this.parent.notify('batchPageAction', {});\n }\n };\n Edit.prototype.infiniteAddAction = function (args) {\n if ((args.requestType === 'save' && args.action === 'add') || args.requestType === 'delete') {\n if (this.parent.editSettings.newRowPosition !== 'Top' && this.selectedIndex !== -1\n && (args.requestType === 'save' && args.action === 'add')) {\n var rowObjects = this.parent.grid.getRowsObject();\n var newRowObject = rowObjects.splice(0, 1)[0];\n var newRowObjectIndex = this.addRowIndex;\n var currentData = this.parent.getCurrentViewRecords();\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n newRowObjectIndex += findChildrenRecords(currentData[newRowObjectIndex + 1]).length;\n }\n newRowObjectIndex = this.parent.editSettings.newRowPosition === 'Below' ? newRowObjectIndex + 1 : newRowObjectIndex;\n rowObjects.splice(newRowObjectIndex, 0, newRowObject);\n var newRecord = currentData.splice(0, 1)[0];\n currentData.splice(newRowObjectIndex, 0, newRecord);\n this.updateInfiniteCurrentViewData(newRecord, this.addRowIndex);\n }\n var movableRows = this.parent.grid.getMovableRows();\n var movableRowsObject = this.parent.grid.getMovableRowsObject();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (!isCache) {\n resetRowIndex(this.parent.grid, this.parent.grid.getRowsObject(), this.parent.grid.getRows(), 0);\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n }\n if (!isCache && this.parent.getFrozenColumns() > 0) {\n resetRowIndex(this.parent.grid, movableRowsObject, movableRows, 0);\n this.updateIndex(this.parent.grid.dataSource, movableRows, this.parent.getCurrentViewRecords());\n }\n }\n };\n Edit.prototype.updateInfiniteCurrentViewData = function (newRecord, newRowIndex) {\n var _this = this;\n var infiniteData = 'infiniteCurrentViewData';\n var updateCurrentViewData = 'updateCurrentViewData';\n var size = Math.ceil(newRowIndex / this.parent.grid.pageSettings.pageSize);\n var page = size > 0 ? size : 1;\n var dataIndex = newRowIndex - ((page - 1) * this.parent.pageSettings.pageSize);\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n infiniteCurrentViewData[1].splice(0, 1);\n var data = infiniteCurrentViewData[page];\n if (!isNullOrUndefined(this.addRowRecord)) {\n data.filter(function (e, index) {\n if (e.uniqueID === _this.addRowRecord.uniqueID) {\n dataIndex = index;\n }\n });\n if (this.addRowRecord.hasChildRecords && this.addRowRecord.childRecords.length &&\n this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n dataIndex += findChildrenRecords(this.addRowRecord).length;\n }\n }\n if (dataIndex >= this.parent.pageSettings.pageSize) {\n page += 1;\n data = infiniteCurrentViewData[page];\n dataIndex = dataIndex - this.parent.pageSettings.pageSize >= 0 ? dataIndex - this.parent.pageSettings.pageSize : 0;\n }\n dataIndex = this.parent.editSettings.newRowPosition === 'Below' ? dataIndex + 1 : dataIndex;\n data.splice(dataIndex, 0, newRecord);\n this.parent.grid.infiniteScrollModule[updateCurrentViewData]();\n };\n Edit.prototype.recordDoubleClick = function (args) {\n var target = args.target;\n if (isNullOrUndefined(target.closest('td.e-rowcell'))) {\n return;\n }\n if (!(this.parent.grid.editSettings.allowEditing) || this.parent.grid.isEdit) {\n return;\n }\n var column = this.parent.grid.getColumnByIndex(+target.closest('td.e-rowcell').getAttribute('aria-colindex'));\n if (this.parent.editSettings.mode === 'Cell' && !this.isOnBatch && column && !column.isPrimaryKey &&\n this.parent.editSettings.allowEditing && column.allowEditing && !(target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && this.parent.editSettings.allowEditOnDblClick) {\n this.isOnBatch = true;\n this.parent.grid.setProperties({ selectedRowIndex: args.rowIndex }, true);\n if (this.parent.enableVirtualization) {\n var tr = parentsUntil(args.target, 'e-row');\n this.prevAriaRowIndex = tr.getAttribute('aria-rowindex');\n tr.setAttribute('aria-rowindex', tr.rowIndex + '');\n }\n this.updateGridEditMode('Batch');\n }\n };\n Edit.prototype.updateGridEditMode = function (mode) {\n this.parent.grid.setProperties({ editSettings: { mode: mode } }, true);\n var updateMethod = getObject('updateEditObj', this.parent.grid.editModule);\n updateMethod.apply(this.parent.grid.editModule);\n this.parent.grid.isEdit = false;\n };\n Edit.prototype.resetIsOnBatch = function () {\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Cell') {\n this.isOnBatch = false;\n this.updateGridEditMode('Normal');\n }\n };\n Edit.prototype.keyPressed = function (args) {\n if (this.isOnBatch) {\n this.keyPress = args.action;\n }\n if (args.action === 'f2') {\n this.recordDoubleClick(args);\n }\n if (args.action === 'escape') {\n this.parent.closeEdit();\n }\n };\n Edit.prototype.deleteUniqueID = function (value) {\n var idFilter = 'uniqueIDFilterCollection';\n delete this.parent[idFilter][value];\n var id = 'uniqueIDCollection';\n delete this.parent[id][value];\n };\n Edit.prototype.cellEdit = function (args) {\n var _this = this;\n var promise = 'promise';\n var prom = args[promise];\n delete args[promise];\n if (this.parent.enableVirtualization && !isNullOrUndefined(this.prevAriaRowIndex)) {\n args.row.setAttribute('aria-rowindex', this.prevAriaRowIndex);\n this.prevAriaRowIndex = undefined;\n }\n if (this.keyPress !== 'enter') {\n this.parent.trigger(events.cellEdit, args, function (celleditArgs) {\n if (!celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.enableToolbarItems('edit');\n }\n else if (celleditArgs.cancel && _this.parent.editSettings.mode === 'Cell') {\n _this.isOnBatch = false;\n _this.updateGridEditMode('Normal');\n }\n if (!isNullOrUndefined(prom)) {\n prom.resolve(celleditArgs);\n }\n });\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-summarycell'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell') {\n if (this.keyPress === 'tab' || this.keyPress === 'shiftTab') {\n this.keyPress = null;\n }\n else if (this.keyPress === 'enter') {\n args.cancel = true;\n this.keyPress = null;\n setValue('isEditCollapse', false, this.parent);\n }\n if (!args.columnObject.allowEditing) {\n args.cancel = true;\n }\n }\n // if (this.isAdd && this.parent.editSettings.mode === 'Batch' && !args.cell.parentElement.classList.contains('e-insertedrow')) {\n // this.isAdd = false;\n // }\n };\n Edit.prototype.enableToolbarItems = function (request) {\n if (!isNullOrUndefined(this.parent.grid.toolbarModule)) {\n var toolbarID = this.parent.element.id + '_gridcontrol_';\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'add', toolbarID + 'edit', toolbarID + 'delete'], request === 'save');\n this.parent.grid.toolbarModule.enableItems([toolbarID + 'update', toolbarID + 'cancel'], request === 'edit');\n }\n };\n Edit.prototype.batchCancel = function () {\n if (this.parent.editSettings.mode === 'Cell') {\n var cellDetails = getValue('editModule.cellDetails', this.parent.grid.editModule);\n var treeCell = this.parent.getCellFromIndex(cellDetails.rowIndex, this.parent.treeColumnIndex);\n this.parent.renderModule.cellRender({\n data: cellDetails.rowData,\n cell: treeCell,\n column: this.parent.grid.getColumns()[this.parent.treeColumnIndex]\n });\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.notify('batchCancelAction', {});\n }\n };\n Edit.prototype.customCellSave = function (args) {\n if (isCountRequired(this.parent) && this.parent.editSettings.mode === 'Cell' && args.action === 'edit') {\n this.updateCell(args, args.rowIndex);\n this.afterCellSave(args, args.row, args.rowIndex);\n }\n };\n Edit.prototype.cellSave = function (args) {\n var _this = this;\n if (this.parent.editSettings.mode === 'Cell' && this.parent.element.querySelector('form')) {\n args.cancel = true;\n var editModule = 'editModule';\n setValue('isEdit', false, this.parent.grid);\n setValue('isEditCollapse', true, this.parent);\n args.rowData[args.columnName] = args.value;\n var row_1;\n if (isNullOrUndefined(args.cell)) {\n row_1 = this.parent.grid.editModule[editModule].form.parentElement.parentNode;\n }\n else {\n row_1 = args.cell.parentNode;\n }\n var rowIndex_1;\n var primaryKeys_1 = this.parent.getPrimaryKeyFieldNames();\n if (isNullOrUndefined(row_1)) {\n this.parent.grid.getCurrentViewRecords().filter(function (e, i) {\n if (e[primaryKeys_1[0]] === args.rowData[primaryKeys_1[0]]) {\n rowIndex_1 = i;\n return;\n }\n });\n }\n else {\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (this.parent.getRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getRows().indexOf(row_1);\n }\n else if (this.parent.getFrozenRightRows().indexOf(row_1) !== -1) {\n rowIndex_1 = this.parent.getFrozenRightRows().indexOf(row_1);\n }\n else {\n rowIndex_1 = this.parent.getMovableRows().indexOf(row_1);\n }\n }\n else {\n rowIndex_1 = (this.parent.getRows().indexOf(row_1) === -1 && (this.parent.getFrozenColumns() > 0)) ?\n this.parent.grid.getMovableRows().indexOf(row_1) : this.parent.getRows().indexOf(row_1);\n }\n }\n var arg = {};\n extend(arg, args);\n arg.cancel = false;\n arg.type = 'save';\n row_1 = this.parent.grid.getRows()[row_1.rowIndex];\n this.parent.trigger(events.actionBegin, arg);\n if (!arg.cancel) {\n if ((row_1.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'tab') {\n this.isTabLastRow = true;\n }\n if (!isRemoteData(this.parent) &&\n !(this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n if (isCountRequired(this.parent)) {\n var eventPromise = 'eventPromise';\n var editArgs = { requestType: 'save', data: args.rowData, action: 'edit', row: row_1,\n rowIndex: rowIndex_1, rowData: args.rowData, columnName: args.columnName,\n filterChoiceCount: null, excelSearchOperator: null };\n this.parent.grid.getDataModule()[eventPromise](editArgs, this.parent.grid.query);\n }\n else {\n this.updateCell(args, rowIndex_1);\n this.afterCellSave(args, row_1, rowIndex_1);\n }\n }\n else if (isRemoteData(this.parent) ||\n (this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n var query = this.parent.grid.query;\n var crud = null;\n crud = this.parent.grid.dataSource.update(primaryKeys_1[0], args.rowData, query.fromTable, query, args.previousValue);\n crud.then(function (e) {\n if (!isNullOrUndefined(e)) {\n args.rowData[args.columnName] = e[args.columnName];\n }\n _this.updateCell(args, rowIndex_1);\n _this.afterCellSave(args, row_1, rowIndex_1);\n });\n }\n }\n else {\n this.parent.grid.isEdit = true;\n }\n }\n };\n Edit.prototype.afterCellSave = function (args, row, rowIndex) {\n var mRow;\n if (this.parent.grid.aggregateModule) {\n this.parent.grid.aggregateModule.refresh(args.rowData);\n }\n this.parent.grid.editModule.destroyWidgets([this.parent.grid.getColumnByField(args.columnName)]);\n this.parent.grid.editModule.formObj.destroy();\n if (this.keyPress !== 'tab' && this.keyPress !== 'shiftTab') {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n }\n this.enableToolbarItems('save');\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n if (args.cell.closest('.e-frozen-left-header') || args.cell.closest('.e-frozen-left-content')) {\n mRow = this.parent.grid.getRows()[rowIndex];\n }\n else if (args.cell.closest('.e-movableheader') || args.cell.closest('.e-movablecontent')) {\n mRow = this.parent.grid.getMovableRows()[rowIndex];\n }\n else {\n mRow = this.parent.grid.getFrozenRightRows()[rowIndex];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n else if (this.parent.getFrozenColumns() > 0) {\n if (args.cell.closest('.e-frozenheader') || args.cell.closest('.e-frozencontent')) {\n mRow = this.parent.grid.getRows()[rowIndex];\n }\n else {\n mRow = this.parent.grid.getMovableRows()[rowIndex];\n }\n removeClass([mRow], ['e-editedrow', 'e-batchrow']);\n removeClass(mRow.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n }\n removeClass([row], ['e-editedrow', 'e-batchrow']);\n removeClass(row.querySelectorAll('.e-rowcell'), ['e-editedbatchcell', 'e-updatedtd']);\n if (this.parent['isCellSaveFocus'] !== false) {\n this.parent.grid.focusModule.restoreFocus();\n }\n editAction({ value: args.rowData, action: 'edit' }, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, args.columnName);\n if ((row.rowIndex === this.parent.getCurrentViewRecords().length - 1) && this.keyPress === 'enter') {\n this.keyPress = null;\n }\n var saveArgs = {\n type: 'save', column: this.parent.getColumnByField(args.columnName), data: args.rowData,\n previousData: args.previousValue, row: row, target: args.cell\n };\n if (this.parent.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n this.parent.grid.refresh();\n }\n this.parent.trigger(events.actionComplete, saveArgs);\n };\n Edit.prototype.lastCellTab = function () {\n if (!this.parent.grid.isEdit && this.isOnBatch && this.keyPress === 'tab' && this.parent.editSettings.mode === 'Cell') {\n if (!this.parent.editSettings.allowNextRowEdit) {\n this.updateGridEditMode('Normal');\n this.isOnBatch = false;\n this.keyPress = null;\n }\n else {\n this.enableToolbarItems('edit');\n }\n }\n };\n Edit.prototype.updateCell = function (args, rowIndex) {\n this.parent.grid.editModule.updateCell(rowIndex, args.columnName, args.rowData[args.columnName]);\n this.parent.grid.getRowsObject()[rowIndex].data = args.rowData;\n };\n Edit.prototype.crudAction = function (details, columnName) {\n editAction(details, this.parent, this.isSelfReference, this.addRowIndex, this.selectedIndex, columnName, this.addRowRecord);\n this.parent.parentData = [];\n var data = this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n data[i].index = i;\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n if (details.value[key] === data[i][key]) {\n if (details.action === 'add') {\n data[i].level = this.internalProperties.level;\n data[i].taskData = this.internalProperties.taskData;\n data[i].uniqueID = this.internalProperties.uniqueID;\n if (!isNullOrUndefined(this.internalProperties.parentItem)) {\n data[i].parentItem = this.internalProperties.parentItem;\n data[i].parentUniqueID = this.internalProperties.parentUniqueID;\n }\n data[i].childRecords = this.internalProperties.childRecords;\n }\n }\n setValue('uniqueIDCollection.' + data[i].uniqueID + '.index', i, this.parent);\n var adaptor = this.parent.dataSource.adaptor;\n if ((isRemoteData(this.parent) || adaptor instanceof RemoteSaveAdaptor)) {\n setValue('uniqueIDCollection.' + data[i].uniqueID, data[i], this.parent);\n }\n if (!data[i].level) {\n this.parent.parentData.push(data[i]);\n }\n }\n if (details.action === 'add' && this.previousNewRowPosition != null) {\n this.parent.setProperties({ editSettings: { newRowPosition: this.previousNewRowPosition } }, true);\n this.previousNewRowPosition = null;\n }\n };\n Edit.prototype.updateIndex = function (data, rows, records) {\n for (var j = 0; j < this.parent.getDataRows().length; j++) {\n var data1 = records[j];\n var index = getValue('uniqueIDCollection.' + data1.uniqueID + '.index', this.parent);\n data1.index = index;\n if (!isNullOrUndefined(data1.parentItem)) {\n var parentIndex = getValue('uniqueIDCollection.' + data1.parentItem.uniqueID + '.index', this.parent);\n data1.parentItem.index = parentIndex;\n }\n }\n var count = -1;\n var treeColIndex = this.parent.treeColumnIndex;\n if (this.parent.getFrozenColumns() > 0) {\n var cells = rows[0].querySelectorAll('.e-rowcell');\n for (var l = 0; l < cells.length; l++) {\n if (cells[l].classList.contains('e-gridrowindex0level0')) {\n treeColIndex = l;\n break;\n }\n }\n }\n for (var k = 0; k < this.parent.getRows().length; k++) {\n if (!rows[k].classList.contains('e-detailrow')) {\n count++;\n }\n var data2 = records[count];\n var index = data2.index;\n var level = data2.level;\n var row = rows[k];\n if (!isNullOrUndefined(data2.parentItem)) {\n index = getValue('uniqueIDCollection.' + data2.parentItem.uniqueID + '.index', this.parent);\n }\n var treecell = row.cells[treeColIndex];\n if (!isNullOrUndefined(treecell)) {\n for (var l = 0; l < treecell.classList.length; l++) {\n var value = treecell.classList[l];\n var remove = /e-gridrowindex/i;\n var removed = /e-griddetailrowindex/i;\n var result = value.match(remove);\n var results = value.match(removed);\n if (result != null) {\n removeClass([treecell], value);\n }\n if (results != null) {\n removeClass([treecell], value);\n }\n }\n if (!rows[k].classList.contains('e-detailrow')) {\n addClass([treecell], 'e-gridrowindex' + index + 'level' + level);\n }\n else {\n addClass([treecell], 'e-griddetailrowindex' + index + 'level' + level);\n }\n }\n }\n };\n Edit.prototype.beginAdd = function () {\n var position;\n var index = this.addRowIndex;\n var records = this.parent.grid.getCurrentViewRecords();\n if (this.parent.editSettings.mode === 'Batch') {\n index = this.batchEditModule.getAddRowIndex();\n this.selectedIndex = this.batchEditModule.getSelectedIndex();\n if (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length) {\n records = this.batchEditModule.getBatchRecords();\n }\n }\n var rows = this.parent.grid.getDataRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n }\n else if ((this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child')\n && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n position = 'after';\n if (!isNullOrUndefined(records[index]) && records[index].expanded) {\n if (this.parent.editSettings.mode === 'Batch' && (this.parent.getBatchChanges()[this.addedRecords].length > 1\n || this.parent.getBatchChanges()[this.deletedRecords].length)) {\n index += findChildrenRecords(records[index]).length;\n if (this.parent.editSettings.newRowPosition !== 'Child') {\n var batchChildCount = this.batchEditModule.getBatchChildCount();\n index = index + batchChildCount;\n }\n }\n else {\n index += findChildrenRecords(records[index]).length;\n }\n }\n }\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange\n && (index || (this.parent.editSettings.newRowPosition === 'Child'\n || this.parent.editSettings.newRowPosition === 'Below'))) {\n if (index >= rows.length - 1) {\n index = rows.length - 2;\n }\n var r = 'rows';\n var newRowObject = this.parent.grid.contentModule[r][0];\n var focussedElement = document.activeElement;\n rows[index + 1][position](rows[0]);\n setValue('batchIndex', index + 1, this.batchEditModule);\n var rowObjectIndex = this.parent.editSettings.newRowPosition === 'Above' ? index : index + 1;\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[r].splice(0, 1);\n this.parent.grid.contentModule[r].splice(rowObjectIndex, 0, newRowObject);\n }\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns || freeze) {\n var movableRows = this.parent.getMovableDataRows();\n var frows = 'freezeRows';\n var newFreezeRowObject = this.parent.grid.getRowsObject()[0];\n movableRows[index + 1][position](movableRows[0]);\n if (freeze) {\n var rightFrozenRows = this.parent.getFrozenRightDataRows();\n rightFrozenRows[index + 1][position](rightFrozenRows[0]);\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.parent.grid.contentModule[frows].splice(0, 1);\n this.parent.grid.contentModule[frows].splice(rowObjectIndex, 0, newFreezeRowObject);\n }\n setValue('batchIndex', index + 1, this.batchEditModule);\n }\n if (this.parent.editSettings.mode === 'Row' || this.parent.editSettings.mode === 'Cell') {\n var errors = this.parent.grid.getContentTable().querySelectorAll('.e-griderror');\n for (var i = 0; i < errors.length; i++) {\n errors[i].remove();\n }\n setValue('errorRules', [], this.parent.grid.editModule.formObj);\n }\n if (isVirtualization) {\n this.prevAriaRowIndex = '-1';\n }\n focussedElement.focus();\n }\n }\n };\n // private beforeDataBound(args: BeforeDataBoundArgs): void {\n // if (this.parent.grid.isEdit && this.parent.dataSource instanceof DataManager &&\n // this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor) {\n // let action: string = getValue('action', args);\n // let data: Object = getValue('data', args);\n // if (action === 'edit' && !isNullOrUndefined(this.editedData)) {\n // data = extend(this.editedData, data);\n // this.editedData = null;\n // }\n // if (!isNullOrUndefined(this.addedData)) {\n // let addedData: Object = args.result[args.result.length - 1];\n // addedData = extend(this.addedData, addedData);\n // this.addedData = null;\n // args.result.splice(this.addedIndex, 0, addedData);\n // args.result.splice(args.result.length, 1);\n // }\n // }\n // }\n Edit.prototype.beginEdit = function (args) {\n if (args.requestType === 'refresh' && this.isOnBatch) {\n args.cancel = true;\n return;\n }\n if (this.parent.editSettings.mode === 'Cell' && args.requestType === 'beginEdit') {\n args.cancel = true;\n return;\n }\n if (this.doubleClickTarget && (this.doubleClickTarget.classList.contains('e-treegridexpand') ||\n this.doubleClickTarget.classList.contains('e-treegridcollapse') || this.doubleClickTarget.classList.contains('e-frame'))) {\n args.cancel = true;\n this.doubleClickTarget = null;\n return;\n }\n if (args.requestType === 'delete') {\n var data_1 = args.data;\n if (isNullOrUndefined(args.data[0].uniqueID)) {\n var primaryKeys_2 = this.parent.getPrimaryKeyFieldNames();\n var _loop_1 = function (i) {\n this_1.parent.flatData.filter(function (e) {\n if (e[primaryKeys_2[0]] === args.data[i][primaryKeys_2[0]]) {\n data_1[i] = e;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < data_1.length; i++) {\n _loop_1(i);\n }\n }\n for (var i = 0; i < data_1.length; i++) {\n this.deleteUniqueID(data_1[i].uniqueID);\n var childs = findChildrenRecords(data_1[i]);\n for (var c = 0; c < childs.length; c++) {\n this.deleteUniqueID(childs[c].uniqueID);\n }\n args.data = args.data.concat(childs);\n }\n }\n if (args.requestType === 'add' || (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling))) {\n if (!(this.parent.grid.selectedRowIndex === -1 && this.isAddedRowByMethod)\n && args.index === this.parent.grid.selectedRowIndex || args.index === 0) {\n this.selectedIndex = this.parent.grid.selectedRowIndex;\n }\n if (this.parent.enableVirtualization) {\n var selector = '.e-row[aria-rowindex=\"' + this.selectedIndex + '\"]';\n var row = void 0;\n if (this.selectedIndex > -1 && this.parent.editSettings.newRowPosition !== 'Top' &&\n this.parent.editSettings.newRowPosition !== 'Bottom') {\n this.prevAriaRowIndex = this.selectedIndex.toString();\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n if (this.prevAriaRowIndex && this.prevAriaRowIndex !== '-1') {\n selector = '.e-row[aria-rowindex=\"' + this.prevAriaRowIndex + '\"]';\n row = this.parent.getContent().querySelector(selector);\n this.addRowIndex = row ? row.rowIndex : 0;\n }\n else {\n this.addRowIndex = 0;\n }\n }\n }\n else {\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowIndex = args.index;\n }\n else {\n this.addRowIndex = this.parent.grid.selectedRowIndex > -1 ? this.parent.grid.selectedRowIndex : 0;\n }\n }\n if (this.isAddedRowByMethod && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.addRowRecord = this.parent.flatData[args.index];\n }\n else {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n }\n if (this.isAddedRowByMethod && args.index !== 0) {\n this.addRowRecord = this.parent.flatData[args.index];\n this.addRowIndex = args.index;\n }\n if (this.parent.editSettings.newRowPosition === 'Child' && isNullOrUndefined(this.addRowRecord)\n && !isNullOrUndefined(this.parent.getSelectedRecords()[0])) {\n this.addRowRecord = this.parent.getSelectedRecords()[0];\n }\n this.isAddedRowByMethod = false;\n args = this.beginAddEdit(args);\n // if (args.requestType === 'save' &&\n // ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor))) {\n // if (args.action === 'edit') {\n // this.editedData = args.data;\n // } else if (args.action === 'add') {\n // this.addedData = value;\n // }\n // }\n };\n Edit.prototype.savePreviousRowPosition = function () {\n if (this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n };\n Edit.prototype.beginAddEdit = function (args) {\n var value = args.data;\n if (args.action === 'add') {\n var key = this.parent.grid.getPrimaryKeyFieldNames()[0];\n var position = null;\n value.taskData = isNullOrUndefined(value.taskData) ? extend({}, args.data) : value.taskData;\n var currentData = this.parent.grid.getCurrentViewRecords();\n if (this.parent.enableVirtualization && args.index !== 0) {\n this.addRowIndex = this.parent.grid.getCurrentViewRecords().indexOf(this.addRowRecord);\n this.selectedIndex = parseInt(this.parent.getRows()[this.addRowIndex].getAttribute('aria-rowindex'), 10);\n }\n var index = this.addRowIndex;\n value.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + value.uniqueID, value, this.parent);\n var level = 0;\n var idMapping = void 0;\n var parentUniqueID = void 0;\n var parentItem = void 0;\n var parentIdMapping = void 0;\n var isVirtualization = this.parent.enableVirtualization && this.addRowIndex > -1 && this.prevAriaRowIndex !== '-1';\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withinRange = this.selectedIndex >= firstAriaIndex && this.selectedIndex <= lastAriaIndex;\n if (currentData.length) {\n idMapping = currentData[this.addRowIndex][this.parent.idMapping];\n parentIdMapping = currentData[this.addRowIndex][this.parent.parentIdMapping];\n if (currentData[this.addRowIndex].parentItem) {\n parentUniqueID = currentData[this.addRowIndex].parentItem.uniqueID;\n }\n parentItem = currentData[this.addRowIndex].parentItem;\n }\n if (this.parent.editSettings.newRowPosition !== 'Top' && currentData.length) {\n level = currentData[this.addRowIndex].level;\n if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n index = currentData[this.addRowIndex].index;\n }\n else if (this.parent.editSettings.newRowPosition === 'Below') {\n position = 'after';\n var childRecordCount = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex = currentData[this.addRowIndex].index;\n index = (childRecordCount > 0) ? (currentDataIndex + childRecordCount) : (currentDataIndex);\n }\n else if (this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n if ((this.selectedIndex > -1 || isVirtualization) && withinRange) {\n value.parentItem = extend({}, currentData[this.addRowIndex]);\n value.parentUniqueID = value.parentItem.uniqueID;\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n var childRecordCount1 = findChildrenRecords(currentData[this.addRowIndex]).length;\n var currentDataIndex1 = currentData[this.addRowIndex].index;\n if (this.selectedIndex >= 0) {\n value.level = level + 1;\n }\n index = (childRecordCount1 > 0) ? (currentDataIndex1 + childRecordCount1) : (currentDataIndex1);\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = idMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Above' || this.parent.editSettings.newRowPosition === 'Below') {\n if ((this.selectedIndex > -1 || isVirtualization) && level && withinRange) {\n value.parentUniqueID = parentUniqueID;\n value.parentItem = extend({}, parentItem);\n delete value.parentItem.childRecords;\n delete value.parentItem[this.parent.childMapping];\n }\n value.level = level;\n if (this.isSelfReference) {\n value.taskData[this.parent.parentIdMapping] = value[this.parent.parentIdMapping] = parentIdMapping;\n if (!isNullOrUndefined(value.parentItem)) {\n updateParentRow(key, value.parentItem, 'add', this.parent, this.isSelfReference, value);\n }\n }\n }\n if (position != null && (this.selectedIndex > -1 || isVirtualization) && withinRange) {\n args.index = position === 'before' ? index : index + 1;\n }\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n var dataSource = (this.parent.grid.dataSource instanceof DataManager ?\n this.parent.grid.dataSource.dataSource.json : this.parent.grid.dataSource);\n args.index = dataSource.length;\n }\n }\n if (isNullOrUndefined(value.level)) {\n value.level = level;\n }\n value.hasChildRecords = false;\n value.childRecords = [];\n value.index = 0;\n }\n if (args.action === 'add') {\n this.internalProperties = { level: value.level, parentItem: value.parentItem, uniqueID: value.uniqueID,\n taskData: value.taskData, parentUniqueID: isNullOrUndefined(value.parentItem) ? undefined : value.parentItem.uniqueID,\n childRecords: value.childRecords };\n }\n if (args.requestType === 'delete') {\n var deletedValues = args.data;\n for (var i = 0; i < deletedValues.length; i++) {\n if (deletedValues[i].parentItem) {\n var parentItem = getParentData(this.parent, deletedValues[i].parentItem.uniqueID);\n if (!isNullOrUndefined(parentItem) && parentItem.hasChildRecords) {\n var childIndex = parentItem.childRecords.indexOf(deletedValues[i]);\n parentItem.childRecords.splice(childIndex, 1);\n }\n }\n }\n }\n return args;\n };\n /**\n * If the data,index and position given, Adds the record to treegrid rows otherwise it will create edit form.\n *\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index, position) {\n if (this.parent.editSettings.newRowPosition === this.previousNewRowPosition || this.previousNewRowPosition === null) {\n this.previousNewRowPosition = this.parent.editSettings.newRowPosition;\n }\n if (!this.isSelfReference && !isNullOrUndefined(data) && Object.hasOwnProperty.call(data, this.parent.childMapping)) {\n var addRecords = [];\n var previousEditMode = this.parent.editSettings.mode;\n var previousGridEditMode = this.parent.grid.editSettings.mode;\n addRecords.push(data);\n this.parent.setProperties({ editSettings: { mode: 'Batch' } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: 'Batch' } }, true);\n if (!isNullOrUndefined(position)) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n var updatedRecords = { addedRecords: addRecords, changedRecords: [], deletedRecords: [] };\n this.parent.notify(events.batchSave, { updatedRecords: updatedRecords, index: index });\n this.parent.setProperties({ editSettings: { mode: previousEditMode } }, true);\n this.parent.grid.setProperties({ editSettings: { mode: previousGridEditMode } }, true);\n this.parent.refresh();\n }\n else {\n if (data) {\n if (index > -1) {\n this.selectedIndex = index;\n this.addRowIndex = index;\n }\n else {\n this.selectedIndex = this.parent.selectedRowIndex;\n this.addRowIndex = this.parent.selectedRowIndex;\n }\n if (position) {\n this.parent.setProperties({ editSettings: { newRowPosition: position } }, true);\n }\n this.parent.grid.editModule.addRecord(data, index);\n }\n else {\n this.parent.grid.editModule.addRecord(data, index);\n }\n }\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} Returns form validation results\n */\n Edit.prototype.editFormValidate = function () {\n return this.parent.grid.editModule.editFormValidate();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Edit.prototype.destroyForm = function () {\n this.parent.grid.editModule.destroyForm();\n };\n Edit.prototype.contentready = function (e) {\n if (!isNullOrUndefined(e.args.requestType)\n && (e.args.requestType.toString() === 'delete' || e.args.requestType.toString() === 'save'\n || (this.parent.editSettings.mode === 'Batch' && e.args.requestType.toString() === 'batchsave'))) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getRows(), this.parent.getCurrentViewRecords());\n if (this.parent.frozenRows || this.parent.getFrozenColumns() || this.parent.frozenColumns) {\n if (this.parent.grid.dataSource.length === this.parent.getMovableDataRows().length) {\n this.updateIndex(this.parent.grid.dataSource, this.parent.getMovableDataRows(), this.parent.getCurrentViewRecords());\n }\n }\n }\n };\n /**\n * If the row index and field is given, edits the particular cell in a row.\n *\n * @returns {void}\n */\n Edit.prototype.editCell = function (rowIndex, field) {\n if (this.parent.editSettings.mode === 'Cell' || this.parent.editSettings.mode === 'Batch') {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.isOnBatch = true;\n this.updateGridEditMode('Batch');\n }\n this.parent.grid.editModule.editCell(rowIndex, field);\n }\n };\n return Edit;\n}());\nexport { Edit };\n","import { Grid, CommandColumn as Command } from '@syncfusion/ej2-grids';\n/**\n * Command Column Module for TreeGrid\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent) {\n Grid.Inject(Command);\n this.parent = parent;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns CommandColumn module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * Destroys the ContextMenu.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n //this.removeEventListener();\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","import { Grid, getObject } from '@syncfusion/ej2-grids';\nimport { DetailRow as detailrow } from '@syncfusion/ej2-grids';\nimport { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { getExpandStatus, isRemoteData } from '../utils';\n/**\n * TreeGrid Detail Row module\n *\n * @hidden\n */\nvar DetailRow = /** @class */ (function () {\n function DetailRow(parent) {\n Grid.Inject(detailrow);\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns DetailRow module name\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n DetailRow.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.on('detaildataBound', this.detaildataBound, this);\n this.parent.grid.on('detail-indentcell-info', this.setIndentVisibility, this);\n this.parent.on('childRowExpand', this.childRowExpand, this);\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('actioncomplete', this.actioncomplete, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DetailRow.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.off('detaildataBound', this.detaildataBound);\n this.parent.off('childRowExpand', this.childRowExpand);\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('actioncomplete', this.actioncomplete);\n this.parent.grid.off('detail-indentcell-info', this.setIndentVisibility);\n };\n DetailRow.prototype.setIndentVisibility = function (args) {\n var visible = 'visible';\n args[visible] = false;\n };\n DetailRow.prototype.dataBoundArg = function () {\n var detailele = this.parent.getRows().filter(function (e) {\n return !e.classList.contains('e-detailrow');\n });\n for (var i = 0; i < detailele.length; i++) {\n var elements = detailele[i].getElementsByClassName('e-detailrowcollapse');\n var detailData = this.parent.grid.getRowObjectFromUID(detailele[i].getAttribute('data-Uid'));\n var parentItem = getObject('parentItem', this.parent.grid.getCurrentViewRecords()[i]);\n if (isNullOrUndefined(parentItem) || !isNullOrUndefined(parentItem) &&\n getExpandStatus(this.parent, detailData.data, this.parent.grid.getCurrentViewRecords())) {\n this.parent.grid.detailRowModule.expand(elements[0]);\n }\n }\n };\n DetailRow.prototype.childRowExpand = function (args) {\n var detailRowElement = args.row.getElementsByClassName('e-detailrowcollapse');\n if (!isNullOrUndefined(detailRowElement[0])) {\n this.parent.grid.detailRowModule.expand(detailRowElement[0]);\n }\n };\n DetailRow.prototype.rowExpandCollapse = function (args) {\n if (isRemoteData(this.parent)) {\n return;\n }\n for (var i = 0; i < args.detailrows.length; i++) {\n args.detailrows[i].style.display = args.action;\n }\n };\n DetailRow.prototype.detaildataBound = function (args) {\n var data = args.data;\n var row = args.detailElement.parentElement.previousSibling;\n var index = !isNullOrUndefined(data.parentItem) ? data.parentItem.index : data.index;\n var expandClass = 'e-gridrowindex' + index + 'level' + data.level;\n var classlist = row.querySelector('.' + expandClass).classList;\n var gridClas = [].slice.call(classlist).filter(function (gridclass) { return (gridclass === expandClass); });\n var newNo = gridClas[0].length;\n var slicedclas = gridClas.toString().slice(6, newNo);\n var detailClass = 'e-griddetail' + slicedclas;\n addClass([args.detailElement.parentElement], detailClass);\n };\n DetailRow.prototype.actioncomplete = function (args) {\n if (args.requestType === 'beginEdit' || args.requestType === 'add') {\n var spann = (args.row.querySelectorAll('.e-editcell')[0].getAttribute('colSpan'));\n var colum = parseInt(spann, 10) - 1;\n var updtdcolum = colum.toString();\n args.row.querySelectorAll('.e-editcell')[0].setAttribute('colSpan', updtdcolum);\n }\n var focusElement = this.parent.grid.contentModule.getRows();\n for (var i = 0; i < focusElement.length; i++) {\n focusElement[i].cells[0].visible = false;\n }\n var focusModule = getObject('focusModule', this.parent.grid);\n var matrix = 'refreshMatrix';\n focusModule[matrix](true)({ rows: this.parent.grid.contentModule.getRows() });\n };\n /**\n * Destroys the DetailModule.\n *\n * @function destroy\n * @returns {void}\n */\n DetailRow.prototype.destroy = function () {\n this.removeEventListener();\n };\n return DetailRow;\n}());\nexport { DetailRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Cell, CellType } from '@syncfusion/ej2-grids';\nimport { VirtualContentRenderer } from '@syncfusion/ej2-grids';\nimport { InterSectionObserver } from '@syncfusion/ej2-grids';\nimport { TreeVirtualRowModelGenerator } from '../renderer/virtual-row-model-generator';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined, EventHandler, getValue, setValue, Browser, debounce } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { isCountRequired } from '../utils';\nvar VirtualTreeContentRenderer = /** @class */ (function (_super) {\n __extends(VirtualTreeContentRenderer, _super);\n function VirtualTreeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isExpandCollapse = false;\n _this.translateY = 0;\n _this.maxiPage = 0;\n _this.recordAdded = false;\n /** @hidden */\n _this.startIndex = -1;\n _this.endIndex = -1;\n _this.preTranslate = 0;\n _this.isRemoteExpand = false;\n /** @hidden */\n _this.isDataSourceChanged = false;\n _this.addEventListener();\n return _this;\n }\n VirtualTreeContentRenderer.prototype.getModelGenerator = function () {\n return new TreeVirtualRowModelGenerator(this.parent);\n };\n VirtualTreeContentRenderer.prototype.getRowByIndex = function (index) {\n return this.parent.getDataRows().filter(function (e) { return parseInt(e.getAttribute('aria-rowindex'), 10) === index; })[0];\n };\n VirtualTreeContentRenderer.prototype.addEventListener = function () {\n this.parent.on(events.virtualActionArgs, this.virtualOtherAction, this);\n this.parent.on(events.indexModifier, this.indexModifier, this);\n };\n VirtualTreeContentRenderer.prototype.virtualOtherAction = function (args) {\n if (args.setTop) {\n this.translateY = 0;\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n else if (args.isExpandCollapse) {\n this.isExpandCollapse = true;\n }\n };\n VirtualTreeContentRenderer.prototype.indexModifier = function (args) {\n var content = this.parent.getContent().querySelector('.e-content');\n if (this.recordAdded && this.startIndex > -1 && this.endIndex > -1) {\n if (this.endIndex > args.count - this.parent.pageSettings.pageSize) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var lastIndex = nextSetResIndex + this.parent.getRows().length;\n if (lastIndex > args.count) {\n lastIndex = nextSetResIndex +\n (args.count - nextSetResIndex);\n }\n this.startIndex = lastIndex - this.parent.getRows().length;\n this.endIndex = lastIndex;\n }\n else {\n this.startIndex += 1;\n this.endIndex += 1;\n }\n this.recordAdded = false;\n }\n if (this.isDataSourceChanged) {\n this.startIndex = 0;\n this.endIndex = this.parent.pageSettings.pageSize - 1;\n }\n args.startIndex = this.startIndex;\n args.endIndex = this.endIndex;\n };\n VirtualTreeContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n this.parent[action]('data-ready', this.onDataReady, this);\n this.parent[action]('refresh-virtual-block', this.refreshContentRows, this);\n this.fn = function () {\n _this.observers.observes(function (scrollArgs) { return _this.scrollListeners(scrollArgs); }, _this.onEnteredAction());\n _this.parent.off('content-ready', _this.fn);\n };\n this.parent.addEventListener('dataBound', this.dataBoundEvent.bind(this));\n this.parent.addEventListener('rowSelected', this.rowSelectedEvent.bind(this));\n this.parent[action]('select-virtual-Row', this.toSelectVirtualRow, this);\n this.parent.on('content-ready', this.fn, this);\n this.parent.addEventListener(events.actionComplete, this.onActionComplete.bind(this));\n this.parent[action]('virtual-scroll-edit-action-begin', this.beginEdit, this);\n this.parent[action]('virtual-scroll-add-action-begin', this.beginAdd, this);\n this.parent[action]('virtual-scroll-edit-success', this.virtualEditSuccess, this);\n this.parent[action]('edit-reset', this.resetIseditValue, this);\n this.parent[action]('get-virtual-data', this.getData, this);\n this.parent[action]('virtual-scroll-edit-cancel', this.cancelEdit, this);\n this.parent[action]('select-row-on-context-open', this.toSelectRowOnContextOpen, this);\n this.parent[action]('refresh-virtual-editform-cells', this.refreshCell, this);\n this.parent[action]('virtaul-cell-focus', this.cellFocus, this);\n }\n else {\n _super.prototype.eventListener.call(this, 'on');\n }\n };\n VirtualTreeContentRenderer.prototype.cellFocus = function (e) {\n var virtualCellFocus = 'virtualCellFocus';\n _super.prototype[virtualCellFocus].call(this, e);\n };\n VirtualTreeContentRenderer.prototype.onDataReady = function (e) {\n _super.prototype.onDataReady.call(this, e);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n if (!isNullOrUndefined(e.count)) {\n this.totalRecords = e.count;\n if (!this.parent.enableColumnVirtualization) {\n getValue('virtualEle', this).setVirtualHeight(this.parent.getRowHeight() * e.count, '100%');\n }\n }\n if ((!isNullOrUndefined(e.requestType) && e.requestType.toString() === 'collapseAll') || this.isDataSourceChanged) {\n this.contents.scrollTop = 0;\n this.isDataSourceChanged = false;\n }\n }\n };\n VirtualTreeContentRenderer.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n if (!(this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || !isCountRequired(this.parent)) {\n getValue('observer', this).options.debounceEvent = false;\n this.observers = new TreeInterSectionObserver(getValue('observer', this).element, getValue('observer', this).options);\n this.contents = this.getPanel().firstChild;\n }\n };\n VirtualTreeContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (this.isRemoteExpand) {\n this.isRemoteExpand = false;\n return this.preTranslate;\n }\n else {\n this.preTranslate = _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n }\n else {\n return _super.prototype.getTranslateY.call(this, sTop, cHeight, info, isOnenter);\n }\n };\n VirtualTreeContentRenderer.prototype.dataBoundEvent = function () {\n var dataBoundEve = 'dataBound';\n var initialRowTop = 'initialRowTop';\n if (this.parent.getRows().length && !this[initialRowTop] && !isNullOrUndefined(this.parent.getRowByIndex(0))) {\n var rowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top;\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (rowTop > 0) {\n this[initialRowTop] = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n else {\n this[initialRowTop] = this.content.getBoundingClientRect().top -\n this.parent.getRowByIndex(0).getBoundingClientRect().height;\n }\n }\n _super.prototype[dataBoundEve].call(this);\n };\n VirtualTreeContentRenderer.prototype.rowSelectedEvent = function (args) {\n var rowSelected = 'rowSelected';\n _super.prototype[rowSelected].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectVirtualRow = function (args) {\n if (this.parent.isEdit) {\n return;\n }\n var selectVirtualRow = 'selectVirtualRow';\n var containerRect = 'containerRect';\n if (isNullOrUndefined(this.observer[containerRect])) {\n this.observer[containerRect] = this.observers[containerRect];\n }\n if (isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule) || args.selectedIndex !== 0 ||\n isNullOrUndefined(this.parent['clipboardModule'].treeGridParent.editModule['addRowIndex'])) {\n _super.prototype[selectVirtualRow].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.refreshCell = function (rowObj) {\n rowObj.cells = this.generateCells();\n };\n VirtualTreeContentRenderer.prototype.generateCells = function () {\n var cells = [];\n for (var i = 0; i < this.parent.columns.length; i++) {\n cells.push(this.generateCell(this.parent.columns[i]));\n }\n return cells;\n };\n VirtualTreeContentRenderer.prototype.generateCell = function (col, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': col.visible,\n 'isDataCell': !isNullOrUndefined(col.field || col.template),\n 'isTemplate': !isNullOrUndefined(col.template),\n 'rowID': rowId,\n 'column': col,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': col.commands,\n 'isForeignKey': col.isForeignColumn && col.isForeignColumn(),\n 'foreignKeyData': col.isForeignColumn && col.isForeignColumn() && getValue(col.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n VirtualTreeContentRenderer.prototype.beginEdit = function (e) {\n var selector = '.e-row[aria-rowindex=\"' + e.index + '\"]';\n var index = this.parent.getContent().querySelector(selector).rowIndex;\n var rowData = this.parent.getCurrentViewRecords()[index];\n e.data = rowData;\n };\n VirtualTreeContentRenderer.prototype.beginAdd = function (args) {\n var addAction = 'addActionBegin';\n var isAdd = 'isAdd';\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, ariaRowIndex: this.ariaRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.ariaRowIndex = addArgs.ariaRowIndex;\n var rows = this.parent.getRows();\n var firstAriaIndex = rows.length ? +rows[0].getAttribute('aria-rowindex') : 0;\n var lastAriaIndex = rows.length ? +rows[rows.length - 1].getAttribute('aria-rowindex') : 0;\n var withInRange = this.parent.selectedRowIndex >= firstAriaIndex && this.parent.selectedRowIndex <= lastAriaIndex;\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n this[isAdd] = true;\n }\n if (this.rowPosition === 'Top' || this.rowPosition === 'Bottom' ||\n ((!this.addRowIndex || this.addRowIndex === -1) && (this.parent.selectedRowIndex === -1 || !withInRange))) {\n _super.prototype[addAction].call(this, args);\n }\n };\n VirtualTreeContentRenderer.prototype.restoreEditState = function () {\n var restoreEdit = 'restoreEdit';\n _super.prototype[restoreEdit].call(this);\n };\n VirtualTreeContentRenderer.prototype.resetIseditValue = function () {\n var resetIsEdit = 'resetIsedit';\n var isAdd = 'isAdd';\n this.parent.notify('reset-edit-props', {});\n if ((this.rowPosition === 'Top' || this.rowPosition === 'Bottom') && this[isAdd]) {\n _super.prototype[resetIsEdit].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.virtualEditSuccess = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && content.querySelector('.e-addedrow')) {\n this.recordAdded = true;\n }\n };\n VirtualTreeContentRenderer.prototype.cancelEdit = function (args) {\n var editCancel = 'editCancel';\n _super.prototype[editCancel].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.toSelectRowOnContextOpen = function (args) {\n var selectRowOnContextOpen = 'selectRowOnContextOpen';\n _super.prototype[selectRowOnContextOpen].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.restoreNewRow = function () {\n var isAdd = 'isAdd';\n var content = this.parent.getContent().querySelector('.e-content');\n if (this[isAdd] && !content.querySelector('.e-addedrow')) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n };\n VirtualTreeContentRenderer.prototype.getData = function (data) {\n var getVirtualData = 'getVirtualData';\n _super.prototype[getVirtualData].call(this, data);\n };\n VirtualTreeContentRenderer.prototype.onActionComplete = function (args) {\n if (args.requestType === 'add') {\n var addArgs = { newRowPosition: this.rowPosition, addRowIndex: this.addRowIndex, ariaRowIndex: this.ariaRowIndex };\n this.parent.notify('get-row-position', addArgs);\n this.rowPosition = addArgs.newRowPosition;\n this.addRowIndex = addArgs.addRowIndex;\n this.ariaRowIndex = addArgs.ariaRowIndex;\n }\n var actionComplete = 'actionComplete';\n _super.prototype[actionComplete].call(this, args);\n };\n VirtualTreeContentRenderer.prototype.onEnteredAction = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n var directVirtualRender = 'directVirtualRender';\n if (!_this.parent[directVirtualRender]) { // with this property, columns are rendered without debouncing on horizontal scroll.\n var preventEvent = 'preventEvent';\n if (Browser.isIE && !isWheel && check && !_this[preventEvent]) {\n _this.parent.showSpinner();\n }\n var xAxis = current.axis === 'X';\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0]\n - 1);\n if (xAxis) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n _this.virtualEle.adjustTable(x, _this.translateY);\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(x, 0);\n }\n }\n };\n };\n VirtualTreeContentRenderer.prototype.scrollListeners = function (scrollArgs) {\n var info = scrollArgs.sentinel;\n var outBuffer = this.parent.pageSettings.pageSize - Math.ceil(this.parent.pageSettings.pageSize / 2);\n var content = this.parent.getContent().querySelector('.e-content');\n var scrollHeight = outBuffer * this.parent.getRowHeight();\n var upScroll = (scrollArgs.offset.top - this.translateY) < 0;\n var downScroll = Math.ceil(scrollArgs.offset.top - this.translateY) >= scrollHeight;\n var selectedRowIndex = 'selectedRowIndex';\n if (upScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var vHeight = +(this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height);\n var index = (~~(content.scrollTop / this.parent.getRowHeight())\n + Math.ceil(vHeight / this.parent.getRowHeight()))\n - this.parent.pageSettings.pageSize;\n index = (index > 0) ? index : 0;\n if (!isNullOrUndefined(this[selectedRowIndex]) && this[selectedRowIndex] !== -1 && index !== this[selectedRowIndex]) {\n index = this[selectedRowIndex];\n }\n this.startIndex = index;\n this.endIndex = index + this.parent.pageSettings.pageSize;\n if (this.endIndex > this.totalRecords) {\n var lastInx = this.totalRecords - 1;\n var remains = this.endIndex % lastInx;\n this.endIndex = lastInx;\n this.startIndex = (this.startIndex - remains) < 0 ? 0 : (this.startIndex - remains);\n }\n //var firsttdinx = parseInt(this.parent.getContent().querySelector('.e-content td').getAttribute('index'), 0);\n var rowPt = Math.ceil(scrollArgs.offset.top / this.parent.getRowHeight());\n rowPt = rowPt % this.parent.pageSettings.pageSize;\n var firsttdinx = 0;\n if (!isNullOrUndefined(this.parent.getRows()[rowPt]) &&\n !isNullOrUndefined(this.parent.getContent().querySelectorAll('.e-content tr')[rowPt])) {\n var attr = this.parent.getContent().querySelectorAll('.e-content tr')[rowPt]\n .querySelector('td').getAttribute('index');\n firsttdinx = +attr; // this.parent.getContent().querySelector('.e-content tr').getAttribute('aria-rowindex');\n }\n if (firsttdinx === 0) {\n this.translateY = scrollArgs.offset.top;\n }\n else {\n var height = this.parent.getRowHeight();\n this.translateY = (scrollArgs.offset.top - (outBuffer * height) > 0) ?\n scrollArgs.offset.top - (outBuffer * height) + 10 : 0;\n }\n }\n else if (downScroll && (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left')) {\n var nextSetResIndex = ~~(content.scrollTop / this.parent.getRowHeight());\n var isLastBlock = (this[selectedRowIndex] + this.parent.pageSettings.pageSize) < this.totalRecords ? false : true;\n if (!isNullOrUndefined(this[selectedRowIndex]) && this[selectedRowIndex] !== -1 &&\n nextSetResIndex !== this[selectedRowIndex] && !isLastBlock) {\n nextSetResIndex = this[selectedRowIndex];\n }\n var lastIndex = nextSetResIndex + this.parent.pageSettings.pageSize;\n if (lastIndex > this.totalRecords) {\n lastIndex = nextSetResIndex +\n (this.totalRecords - nextSetResIndex);\n }\n this.startIndex = !isLastBlock ? lastIndex - this.parent.pageSettings.pageSize : nextSetResIndex;\n this.endIndex = lastIndex;\n if (scrollArgs.offset.top > (this.parent.getRowHeight() * this.totalRecords)) {\n this.translateY = this.getTranslateY(scrollArgs.offset.top, content.getBoundingClientRect().height);\n }\n else {\n this.translateY = scrollArgs.offset.top;\n }\n }\n if (((downScroll && (scrollArgs.offset.top < (this.parent.getRowHeight() * this.totalRecords)))\n || (upScroll)) || (scrollArgs.direction === 'right' || scrollArgs.direction === 'left')) {\n var viewInfo = this.currentInfo = getValue('getInfoFromView', this).apply(this, [scrollArgs.direction, info, scrollArgs.offset]);\n this.previousInfo = viewInfo;\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n var page = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.parent.setProperties({ pageSettings: { currentPage: page } }, true);\n if (scrollArgs.direction !== 'right' && scrollArgs.direction !== 'left') {\n viewInfo.event = viewInfo.event === 'refresh-virtual-block' ? 'model-changed' : viewInfo.event;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n }\n };\n VirtualTreeContentRenderer.prototype.appendContent = function (target, newChild, e) {\n if ((this.parent.dataSource instanceof DataManager && this.parent.dataSource.dataSource.url !== undefined\n && !this.parent.dataSource.dataSource.offline && this.parent.dataSource.dataSource.url !== '') || isCountRequired(this.parent)) {\n if (getValue('isExpandCollapse', e)) {\n this.isRemoteExpand = true;\n }\n _super.prototype.appendContent.call(this, target, newChild, e);\n }\n else {\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' &&\n getValue('currentInfo', this).page && getValue('currentInfo', this).page !== e.virtualInfo.page ?\n getValue('currentInfo', this) : e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n var cOffset = this.getColumnOffset(cBlock);\n var width = void 0;\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, (Browser.isIE || Browser.info.name === 'edge'));\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n var replace = 'replaceWith';\n this.getTable().querySelector('tbody')[replace](target);\n if (!this.isExpandCollapse || this.translateY === 0) {\n this.translateY = this.translateY < 0 ? 0 : this.translateY;\n getValue('virtualEle', this).adjustTable(cOffset, this.translateY);\n }\n else {\n this.isExpandCollapse = false;\n }\n setValue('prevInfo', this.previousInfo ? this.previousInfo : info, this);\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(events.autoCol, {});\n }\n var focusCell = 'focusCell';\n var restoreAdd = 'restoreAdd';\n var ensureSelectedRowPosition = 'ensureSelectedRowPosition';\n _super.prototype[focusCell].call(this, e);\n var isAdd = 'isAdd';\n if (this[isAdd] && !this.parent.getContent().querySelector('.e-content').querySelector('.e-addedrow')) {\n if (!(this.rowPosition === 'Top' || this.rowPosition === 'Bottom')) {\n if (this.ariaRowIndex >= this.startIndex) {\n this.restoreNewRow();\n }\n else if (this.addRowIndex && this.addRowIndex > -1) {\n this[isAdd] = false;\n this.parent.isEdit = false;\n }\n }\n }\n this.restoreEditState();\n _super.prototype[restoreAdd].call(this);\n _super.prototype[ensureSelectedRowPosition].call(this);\n }\n };\n VirtualTreeContentRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('data-ready', this.onDataReady);\n this.parent.off('content-ready', this.fn);\n this.parent.off('select-virtual-Row', this.toSelectVirtualRow);\n this.parent.off('dataBound', this.dataBoundEvent);\n this.parent.off('rowSelected', this.rowSelectedEvent);\n this.parent.off(events.virtualActionArgs, this.virtualOtherAction);\n this.parent.off(events.indexModifier, this.indexModifier);\n this.parent.off('virtual-scroll-edit-action-begin', this.beginEdit);\n this.parent.off('virtual-scroll-add-action-begin', this.beginAdd);\n this.parent.off('virtual-scroll-edit-success', this.virtualEditSuccess);\n this.parent.off('edit-reset', this.resetIseditValue);\n this.parent.off('get-virtual-data', this.getData);\n this.parent.off('virtual-scroll-edit-cancel', this.cancelEdit);\n this.parent.off('select-row-on-context-open', this.toSelectRowOnContextOpen);\n this.parent.off('refresh-virtual-editform-cells', this.refreshCell);\n this.parent.off('virtaul-cell-focus', this.cellFocus);\n };\n return VirtualTreeContentRenderer;\n}(VirtualContentRenderer));\nexport { VirtualTreeContentRenderer };\nvar TreeInterSectionObserver = /** @class */ (function (_super) {\n __extends(TreeInterSectionObserver, _super);\n function TreeInterSectionObserver() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isWheeling = false;\n _this.newPos = 0;\n _this.lastPos = 0;\n _this.timer = 0;\n return _this;\n }\n TreeInterSectionObserver.prototype.observes = function (callback, onEnterCallback) {\n var containerRect = 'containerRect';\n _super.prototype[containerRect] = getValue('options', this).container.getBoundingClientRect();\n EventHandler.add(getValue('options', this).container, 'scroll', this.virtualScrollHandlers(callback, onEnterCallback), this);\n };\n TreeInterSectionObserver.prototype.clear = function () {\n this.lastPos = null;\n };\n TreeInterSectionObserver.prototype.virtualScrollHandlers = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var options = 'options';\n var movableEle = 'movableEle';\n var element = 'element';\n var fromWheel = 'fromWheel';\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this[options].prevTop = this[options].prevLeft = 0;\n return function (e) {\n var top = _this[options].movableContainer ? _this[options].container.scrollTop : e.target.scrollTop;\n var left = _this[options].movableContainer ? _this[options].scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this[options].prevTop < top ? 'down' : 'up';\n direction = _this[options].prevLeft === left ? direction : _this[options].prevLeft < left ? 'right' : 'left';\n _this[options].prevTop = top;\n _this[options].prevLeft = left;\n var current = _this.sentinelInfo[direction];\n var delta = 0;\n _this.newPos = top;\n if (_this.lastPos != null) { // && newPos < maxScroll\n delta = _this.newPos - _this.lastPos;\n }\n _this.lastPos = _this.newPos;\n if (_this.timer) {\n clearTimeout(_this.timer);\n }\n _this.timer = setTimeout(_this.clear, 0);\n if ((delta > 100 || delta < -100) && (e && e.preventDefault)) {\n e.returnValue = false;\n e.preventDefault();\n }\n if (_this[options].axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered && current.axis === 'X') {\n if (_this[movableEle] && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this[movableEle], current, direction, { top: top, left: left }, _this[fromWheel], check);\n }\n else {\n onEnterCallback(_this[element], current, direction, { top: top, left: left }, _this[fromWheel], check);\n }\n }\n if (check) {\n var fn = debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n else {\n callback({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n }\n _this[fromWheel] = false;\n };\n };\n return TreeInterSectionObserver;\n}(InterSectionObserver));\nexport { TreeInterSectionObserver };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Grid, VirtualScroll as GridVirtualScroll } from '@syncfusion/ej2-grids';\nimport { RenderType } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { getExpandStatus } from '../utils';\nimport { VirtualTreeContentRenderer } from '../renderer/virtual-tree-content-render';\nimport { VirtualHeaderRenderer } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid Virtual Scroll module will handle Virtualization\n *\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n /**\n * Constructor for VirtualScroll module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function VirtualScroll(parent) {\n this.prevstartIndex = -1;\n this.prevendIndex = -1;\n this.parent = parent;\n Grid.Inject(TreeVirtual);\n this.addEventListener();\n }\n VirtualScroll.prototype.returnVisualData = function (args) {\n args.data = this.visualData;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns VirtualScroll module name\n */\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualScroll';\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds, this);\n this.parent.on(events.pagingActions, this.virtualPageAction, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.localPagedExpandCollapse, this.collapseExpandVirtualchilds);\n this.parent.off(events.pagingActions, this.virtualPageAction);\n this.parent.off(events.destroy, this.destroy);\n };\n VirtualScroll.prototype.collapseExpandVirtualchilds = function (row) {\n this.parent.grid.notify(events.virtualActionArgs, { isExpandCollapse: true });\n this.expandCollapseRec = row.record;\n row.record.expanded = row.action === 'collapse' ? false : true;\n var ret = {\n result: this.parent.flatData,\n row: row.row,\n action: row.action,\n record: row.record,\n count: this.parent.flatData.length\n };\n if (this.parent.enableVirtualization && this.parent.selectionSettings.mode === 'Cell' ||\n this.parent.selectionSettings.mode === 'Row' && !this.parent.selectionSettings.persistSelection) {\n this.parent.grid.clearSelection();\n }\n var requestType = getValue('isCollapseAll', this.parent) ? 'collapseAll' : 'refresh';\n getValue('grid.renderModule', this.parent).dataManagerSuccess(ret, { requestType: requestType });\n };\n VirtualScroll.prototype.virtualPageAction = function (pageingDetails) {\n var _this = this;\n var dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var parents = dm.executeLocal(new Query().where(expanded));\n var visualData = parents.filter(function (e) {\n return getExpandStatus(_this.parent, e, parents);\n });\n this.visualData = visualData;\n this.parent.grid.notify(events.dataListener, { data: visualData });\n var counts = { startIndex: -1, endIndex: -1, count: pageingDetails.count };\n this.parent.grid.notify(events.indexModifier, counts);\n var startIndex = counts.startIndex;\n var endIndex = counts.endIndex;\n pageingDetails.count = visualData.length;\n if (startIndex === -1 && endIndex === -1) {\n var query = new Query();\n var size = this.parent.grid.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n var skip = size * (current - 1);\n query = query.skip(skip).take(size);\n dm.dataSource.json = visualData;\n pageingDetails.result = dm.executeLocal(query);\n }\n else {\n var requestType = pageingDetails.actionArgs.requestType;\n if (requestType === 'filtering' || requestType === 'collapseAll' ||\n (requestType === 'refresh' && this.parent.enableCollapseAll && endIndex > visualData.length)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.getContent().firstElementChild.scrollTop = 0;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n //if ((this.prevendIndex !== -1 && this.prevstartIndex !== -1) &&\n //this.prevendIndex === endIndex && this.prevstartIndex === startIndex) {\n if (!isNullOrUndefined(this.expandCollapseRec) && (pageingDetails.actionArgs.requestType === 'virtualscroll' ||\n (pageingDetails.actionArgs.requestType === 'refresh' && startIndex !== this.prevstartIndex)) &&\n (startIndex < this.parent.getRows().length && endIndex <= startIndex + this.parent.getRows().length)) {\n startIndex = 0;\n }\n if (!isNullOrUndefined(this.expandCollapseRec)) {\n var resourceCount = this.parent.getRows();\n var sIndex = visualData.indexOf(this.expandCollapseRec);\n var tempdata = visualData.slice(sIndex, sIndex + resourceCount.length);\n if (tempdata.length < resourceCount.length && sIndex >= 0 && startIndex !== 0) {\n sIndex = visualData.length - resourceCount.length;\n sIndex = sIndex > 0 ? sIndex : 0;\n startIndex = sIndex;\n endIndex = visualData.length;\n }\n else if (getValue('isCollapseAll', this.parent)) {\n startIndex = 0;\n endIndex = this.parent.grid.pageSettings.pageSize - 1;\n this.parent.grid.notify(events.virtualActionArgs, { setTop: true });\n }\n }\n //}\n if ((this.parent.enableCollapseAll || this.parent.expandStateMapping) && !isNullOrUndefined(this.expandCollapseRec)) {\n if (pageingDetails.count < this.parent.getRows()[0].getBoundingClientRect().height) {\n startIndex = 0;\n }\n else if (!this.parent['isExpandAll']) {\n startIndex = this.prevstartIndex === -1 ? 0 : this.prevstartIndex;\n }\n }\n this.expandCollapseRec = null;\n pageingDetails.result = visualData.slice(startIndex, endIndex);\n this.prevstartIndex = startIndex;\n this.prevendIndex = endIndex;\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * To destroy the virtualScroll module\n *\n * @returns {void}\n * @hidden\n */\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\nvar TreeVirtual = /** @class */ (function (_super) {\n __extends(TreeVirtual, _super);\n function TreeVirtual(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n getValue('parent', _this).off('initial-load', getValue('instantiateRenderer', _this), _this);\n getValue('parent', _this).on('initial-load', _this.instantiateRenderers, _this);\n return _this;\n }\n TreeVirtual.prototype.getModuleName = function () {\n return 'treeVirtualScroll';\n };\n TreeVirtual.prototype.instantiateRenderers = function () {\n var parentGrid = getValue('parent', this);\n getValue('parent', this).log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = getValue('locator', this).getService('rendererFactory');\n if (parentGrid.enableColumnVirtualization) {\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Header, new VirtualHeaderRenderer(getValue('parent', this), getValue('locator', this))]);\n }\n getValue('addRenderer', renderer)\n .apply(renderer, [RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this))]);\n //renderer.addRenderer(RenderType.Content, new VirtualTreeContentRenderer(getValue('parent', this), getValue('locator', this)));\n this.ensurePageSize();\n };\n TreeVirtual.prototype.ensurePageSize = function () {\n var parentGrid = getValue('parent', this);\n var rowHeight = parentGrid.getRowHeight();\n if (!isNullOrUndefined(parentGrid.height) && typeof (parentGrid.height) === 'string' && parentGrid.height.indexOf('%') !== -1) {\n parentGrid.element.style.height = parentGrid.height;\n }\n var vHeight = parentGrid.height.toString().indexOf('%') < 0 ? parentGrid.height :\n parentGrid.element.getBoundingClientRect().height;\n var blockSize = ~~(vHeight / rowHeight);\n var height = blockSize * 2;\n var size = parentGrid.pageSettings.pageSize;\n parentGrid.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n return TreeVirtual;\n}(GridVirtualScroll));\nexport { TreeVirtual };\n","import { parentsUntil } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getMovableDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getFrozenRightRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var rData = this.parent.grid.getRowObjectFromUID(rows[i].getAttribute('data-Uid')).data;\n rows[i].style.display = args.action;\n if (freeze) {\n frozenRightRows[i].style.display = args.action;\n }\n var queryselector = args.action === 'none' ? '.e-treecolumn-container .e-treegridcollapse'\n : '.e-treecolumn-container .e-treegridexpand';\n if (frozenrows[rows[i].rowIndex].querySelector(queryselector)) {\n var cRow = [];\n for (var i_1 = 0; i_1 < movableRows.length; i_1++) {\n if (movableRows[i_1].querySelector('.e-gridrowindex' + rData.index + 'level' + (rData.level + 1))) {\n cRow.push(movableRows[i_1]);\n }\n }\n if (cRow.length) {\n this.rowExpandCollapse({ detailrows: cRow, action: args.action });\n }\n }\n }\n };\n Freeze.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, 'e-rowcell') &&\n this.parent.grid.editSettings.allowEditOnDblClick && this.parent.editSettings.mode !== 'Cell') {\n this.parent.grid.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { Grid, ColumnChooser as GridColumnChooser } from '@syncfusion/ej2-grids';\n/**\n * TreeGrid ColumnChooser module\n *\n * @hidden\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance.\n */\n function ColumnChooser(parent) {\n Grid.Inject(GridColumnChooser);\n this.parent = parent;\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @returns {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n return this.parent.grid.columnChooserModule.openColumnChooser(X, Y);\n };\n /**\n * Destroys the openColumnChooser.\n *\n * @function destroy\n * @returns {void}\n */\n ColumnChooser.prototype.destroy = function () {\n //this.parent.grid.ColumnChooserModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns ColumnChooser module name\n */\n ColumnChooser.prototype.getModuleName = function () {\n return 'ColumnChooser';\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { Grid, InfiniteScroll as GridInfiniteScroll } from '@syncfusion/ej2-grids';\nimport { RowRenderer, resetRowIndex } from '@syncfusion/ej2-grids';\nimport { getValue, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nimport { findChildrenRecords } 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 };\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 };\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 /**\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 dm = new DataManager(pageingDetails.result);\n var expanded = new Predicate('expanded', 'notequal', null).or('expanded', 'notequal', undefined);\n var visualData = dm.executeLocal(new Query().where(expanded));\n var actionArgs = getValue('actionArgs', pageingDetails.actionArgs);\n var actions = getValue('actions', this.parent.grid.infiniteScrollModule);\n var initial = actions.some(function (value) { return value === actionArgs.requestType; });\n var initialRender = initial ? true : this.parent.initialRender ? true : false;\n this.visualData = visualData;\n pageingDetails.count = visualData.length;\n if (getValue('isPrinting', pageingDetails.actionArgs)) {\n pageingDetails.result = visualData;\n }\n else {\n var query = new Query();\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var size = initialRender ?\n this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks :\n this.parent.pageSettings.pageSize;\n var current = this.parent.grid.pageSettings.currentPage;\n if (!isNullOrUndefined(actionArgs)) {\n var lastIndex = getValue('lastIndex', this.parent.grid.infiniteScrollModule);\n var firstIndex = getValue('firstIndex', this.parent.grid.infiniteScrollModule);\n if (!isCache && actionArgs.requestType === 'delete') {\n var skip = lastIndex - actionArgs.data.length + 1;\n var take = actionArgs.data.length;\n query = query.skip(skip).take(take);\n }\n else if (isCache && actionArgs.requestType === 'delete' ||\n (actionArgs.requestType === 'save' && actionArgs.action === 'add')) {\n query = query.skip(firstIndex);\n query = query.take(this.parent.infiniteScrollSettings.initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n query = query.page(current, size);\n }\n }\n else {\n query = query.page(current, size);\n }\n dm.dataSource.json = visualData;\n if (!isCache && !isNullOrUndefined(actionArgs) && actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n pageingDetails.result = [actionArgs.data];\n }\n else {\n pageingDetails.result = dm.executeLocal(query);\n }\n }\n this.parent.notify('updateAction', pageingDetails);\n };\n /**\n * Handles the currentviewdata for delete operation.\n *\n * @param {{ e: InfiniteScrollArgs, result: Object[] }} args - Scroller and data details\n * @param {InfiniteScrollArgs} args.e - scroller details while CRUD\n * @param {Object[]} args.result - data details while CRUD\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n var infiniteData = 'infiniteCurrentViewData';\n var infiniteCurrentViewData = this.parent.grid.infiniteScrollModule[infiniteData];\n var keys = Object.keys(infiniteCurrentViewData);\n if (args.e.requestType === 'delete' && args.result.length > 1) {\n for (var i = 1; i < args.result.length; i++) {\n infiniteCurrentViewData[keys[keys.length - 1]].push(args.result[i]);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {ActionEventArgs} args - crud action details\n * @returns {void}\n */\n InfiniteScroll.prototype.infiniteDeleteHandler = function (args) {\n if (args.requestType === 'delete') {\n var rows = this.parent.grid.getRowsObject();\n var rowElms = this.parent.getRows();\n var data = args.data instanceof Array ? args.data : [args.data];\n var keyField = this.parent.grid.getPrimaryKeyFieldNames()[0];\n this.removeRows(rowElms, rows, data, keyField, true);\n if (this.parent.getFrozenColumns() > 0) {\n var mRows = this.parent.grid.getMovableRowsObject();\n var mRowElms = this.parent.grid.getMovableRows();\n this.removeRows(mRowElms, mRows, data, keyField);\n }\n }\n };\n /**\n * Handles the row objects for delete operation.\n *\n * @param {Element[]} rowElms - row elements\n * @param {Row<Column>[]} rows - Row object collection\n * @param {Object[]} data - data collection\n * @param {string} keyField - primary key name\n * @param { boolean} isFrozen - Specifies whether frozen column enabled\n * @returns {void}\n */\n InfiniteScroll.prototype.removeRows = function (rowElms, rows, data, keyField, isFrozen) {\n var _this = this;\n var resetInfiniteCurrentViewData = 'resetInfiniteCurrentViewData';\n var _loop_1 = function (i) {\n rows.filter(function (e, index) {\n if (e.data[keyField] === data[i][keyField]) {\n if (isFrozen) {\n var page = Math.ceil((index + 1) / _this.parent.grid.pageSettings.pageSize);\n _this.parent.grid.infiniteScrollModule[resetInfiniteCurrentViewData](page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[index]);\n rowElms.splice(index, 1);\n }\n });\n };\n for (var i = 0; i < data.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * Handles the row objects for Add operation.\n */\n InfiniteScroll.prototype.createRows = function (eventArgs) {\n var locator = 'serviceLocator';\n var actionArgs = eventArgs.args.e;\n var row = eventArgs.row;\n var serviceLocator = this.parent.grid.infiniteScrollModule[locator];\n var rowRenderer = new RowRenderer(serviceLocator, null, this.parent.grid);\n var tbody;\n var currentData = this.parent.getCurrentViewRecords();\n var currentRows = eventArgs.isMovable ? this.parent.grid.getMovableRows()\n : this.parent.grid.getDataRows();\n if (eventArgs.isFrozenRight) {\n tbody = this.parent.element.querySelector('.e-frozen-right-content').querySelector('tbody');\n }\n else {\n tbody = !this.parent.grid.isFrozenGrid() ? this.parent.getContent().querySelector('tbody') : eventArgs.isMovable\n ? this.parent.grid.getMovableVirtualContent().querySelector('tbody')\n : this.parent.grid.getFrozenVirtualContent().querySelector('tbody');\n }\n if (this.parent.frozenRows) {\n tbody = eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType !== 'add'\n || !eventArgs.isFrozenRows && this.parent.grid.infiniteScrollModule.requestType === 'add'\n ? !this.parent.grid.isFrozenGrid() ? this.parent.getHeaderContent().querySelector('tbody')\n : eventArgs.isMovable ? this.parent.grid.getMovableVirtualHeader().querySelector('tbody')\n : eventArgs.isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector('tbody')\n : this.parent.grid.getFrozenVirtualHeader().querySelector('tbody') : tbody;\n }\n var position;\n var addRowIndex = 'addRowIndex';\n var newRowIndex = this.parent.editModule[addRowIndex];\n for (var i = 0; i < row.length; i++) {\n var newRow = rowRenderer.render(row[i], this.parent.grid.getColumns());\n if (actionArgs.requestType === 'save' && actionArgs.action === 'add') {\n if (getValue('selectedIndex', this.parent.editModule) !== -1 && this.parent.editSettings.newRowPosition !== 'Top') {\n if (this.parent.editSettings.newRowPosition === 'Below' || this.parent.editSettings.newRowPosition === 'Child') {\n position = 'after';\n newRowIndex += findChildrenRecords(currentData[newRowIndex + 1]).length;\n if (this.parent.editSettings.newRowPosition === 'Child') {\n newRowIndex -= 1; //// for child position already child record is added in childRecords so subtracting 1\n }\n currentRows[newRowIndex][position](newRow);\n }\n else if (this.parent.editSettings.newRowPosition === 'Above') {\n position = 'before';\n currentRows[this.parent.editModule[addRowIndex]][position](newRow);\n }\n }\n else if (this.parent.editSettings.newRowPosition === 'Bottom') {\n tbody.appendChild(newRow);\n }\n else {\n tbody.insertBefore(newRow, tbody.firstElementChild);\n }\n }\n else if (actionArgs.requestType === 'delete') {\n tbody.appendChild(newRow);\n }\n }\n eventArgs.cancel = true;\n };\n /**\n * To destroy the infiniteScroll module\n *\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\nexport { InfiniteScroll };\n"],"names":["isRemoteData","parent","dataSource","DataManager","adaptor","ODataAdaptor","WebApiAdaptor","WebMethodAdaptor","CacheAdaptor","UrlAdaptor","isCountRequired","isCheckboxcolumn","i","columns","length","showCheckbox","isFilterChildHierarchy","isNullOrUndefined","grid","searchSettings","key","hierarchyMode","allowFiltering","filterSettings","findParentRecords","records","datas","len","Object","keys","getObject","push","getExpandStatus","record","parents","childParent","parentRecord","parentItem","getParentData","uniqueID","initialRender","expandStateMapping","expanded","findChildrenRecords","hasChildRecords","childRecords","concat","isOffline","dm","ready","extendArray","array","obj","objArr","j","getPlainData","value","index","level","taskData","requireFilter","isHidden","el","style","window","getComputedStyle","display","visibility","editAction","details","control","isSelfReference","addRowIndex","selectedIndex","columnName","addRowRecord","batchChanges","action","getPrimaryKeyFieldNames","treeData","json","modifiedData","originalData","isSkip","editSettings","mode","editModule","getBatchChanges","addAct","currentViewRecords","getCurrentViewRecords","extend","newRowPosition","unshift","primaryKeys","currentdata","addAction","Array","k","_loop_1","prototype","hasOwnProperty","call","editedData","parentIdMapping","idMapping","splice","childMapping","updateParentRow","currentData_1","parentData","flatData","filter","e","p","removeChildRecords","isChildAll","editRowIndex","updateCurrentViewData","child","index_1","currentRecords","map","enableVirtualization","getValue","parentUniqueID","sortSettings","indexOf","data","setRowData","row","getRowByIndex","getRows","getRowIndexByPrimaryKey","movableRow","frozenRows","getFrozenColumns","getMovableRowByIndex","index_2","treeColumnIndex","allowRowDragAndDrop","enableImmutableMode","renderModule","cellRender","cell","cells","column","getColumns","requestType","Column","options","this","allowEditing","edit","disableHtmlEncode","allowReordering","showColumnMenu","allowSorting","allowResizing","merge","setProperties","clipboardModule","uid","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Predicate","_super","apply","Property","ChildProperty","FilterSettings","Collection","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","Grid","Inject","GridLogger","getModuleName","log","types","args","type","item","detailLists","cOp","check","success","message","generateMessage","replace","gridurl","substring","treeGridObj","dataStateChange","console","logType","treeLog","treeGrid","isPrimaryKey","treeGridDetails","mapping_fields_missing","opt","ERROR","rowDataBound","queryCellInfo","beforeDataBound","actionBegin","actionComplete","rowSelected","checkboxChange","rowDeselected","toolbarClick","beforeExcelExport","beforePdfExport","collapsed","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","crudAction","beginEdit","beginAdd","recordDoubleClick","cellSave","cellSaved","cellEdit","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","keyPressed","doubleTap","virtualActionArgs","dataListener","indexModifier","beforeStartEdit","beforeBatchCancel","detailDataBound","rowDragStartHelper","rowsAdd","rowsRemove","rowdraging","rowDropped","TreeClipboard","_this","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getSelection","toString","clipBoardTextArea","rows","selectionSettings","selectedIndexes","getSelectedRowIndexes","sort","a","classList","contains","slice","querySelectorAll","uniqueid","getSelectedRecords","copyHierarchyMode","parentContentData","childContentData","headerTextArray","getVisibleColumns","headerText","cancel","trigger","Browser","userAgent","match","setSelectionRange","select","treeLevel","copy","paste","rowIndex","colIndex","destroy","childData","GridClipboard","Selection","selectedItems","filteredList","addEventListener","on","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","removeEventListener","isDestroyed","off","checkBox","checkWrap","parentsUntil","querySelector","closest","selectCheckboxes","triggerChkChangeEvent","nextElementSibling","autoCheckHierarchy","checkBoxvalue","headerSelection","checkState","rowElement","checked","rowData","getCheckedRecords","events.checkboxChange","getCheckboxcolumnIndex","mappingUid","columnIndex","col","headerCelllength","getHeaderContent","getAttribute","headerElement","rowChkBox","createElement","className","attrs","createCheckBox","label","add","insertBefore","cloneNode","firstChild","renderColumnCheckbox","setAttribute","checkboxState","allowTextWrap","width","checkbox","removeClass","container","containerELe","spanEle","innerHTML","divEle","appendChild","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","count","isSummaryRow","indeter","checkChildRecords","checkBoxRecord","checkAll","filterResult","rec","currentRecord","checkedRecord","recordIndex","checkboxRecord","tr","movableTr","getMovableDataRows","checkedIndex","checkBoxclass","childLength","updatedData","forEach","getCheckedrecords","getCheckedRowIndexes","Print","GridPrint","events.printGridInit","printTreeGrid","printGrid","gridElement","events.queryCellInfo","events.rowDataBound","events.beforeDataBound","addClass","print","SearchSettings","SelectionSettings","Render","templateResult","columnTemplateResult","reactTemplateRender","RowModifier","allowPaging","pageSettings","pageSizeMode","enableCollapseAll","proxy_1","parentrec","cellElement","pad","filterLevel","totalIconsWidth","getColumnByUid","summaryRow","frozenColumns","enableColumnVirtualization","getColumnIndexByUid","emptyExpandIcon","styles","n","iconRequired","hasFilteredChildRecords","expandIcon","expand","updateTreeCell","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","field","notify","checkboxElement","parseInt","summaryData","rowTemplate","treeColumn","templateFn","colindex","template","templateCompiler","textContent","appendChildren","children","tempID","element","id","portals","isReact","result","DataManipulation","addedRecords","parentItems","taskIds","hierarchyData","storedIndex","sortedData","isSortAction","dataResults","updateParentRemoteData","beginSorting","updateData","events.remoteExpand","collectExpandingRecs","dataProcessor","isRemote","convertToFlatData","query","Query","filterKey","params","param","where","addParams","hasChildMapping","qry","clone","queries","executeQuery","then","DataUtil","distinct","httpRequest","statusText","setValue","zerothLevelData","dataManagerSuccess","hideSpinner","convertJSONData","tempData","selfData","mappingData","executeLocal","group","groupData","items","selfReferenceUpdate","createRecords","referenceData","shift","loadChildOnDemand","getUid","Math","ceil","random","rowDetails","isChild","gridRows","getContentTable","childRecord","targetEle","getElementsByClassName","getRowObjectFromUID","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","getDataModule","generateQuery","clonequries","fn","showSpinner","currentViewData","inx","getRowsObject","haveChild","events.actionComplete","aggregates","gridQuery","aggregateQuery","summaryQuery","q","summaryModule","calculateSummaryValue","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","enableInfiniteScrolling","events.expanded","contentModule","currentInfo","prevInfo","loadNext","currentPage","nextInfo","page","parentRecords","treeGridData","currentData","dataObj","isExport","expresults","exportType","isPrinting","actionArgs","actionData","actionAddArgs","primaryKeyColumnName","dataValue","isLocalData","updateAction","filterQuery","searchQuery","results","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","sortComparer","bind","direction","sortBy","sortArgs","temp","paging","printMode","actArgs","events.pagingActions","isCollapsedStatePersist","actualResults","dataResult","events.crudAction","events.batchSave","ToolbarItem","ContextMenuItems","PageSettings","AggregateColumn","intl","Internationalization","setFormatter","cultureName","format","skeleton","formatFn","getFormatFunction","getDateFormat","getNumberFormat","getFormatter","setTemplate","helper","undefined","footerTemplate","getEnumValue","CellType","Summary","compile","property","getTemplate","setPropertiesSilent","prop","AggregateRow","EditSettings","SortDescriptor","SortSettings","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","changedRecords","deletedRecords","objectEqualityChecker","old","current","isEqual","excludeKeys","Date","getTime","TreeGrid_1","TreeGridSelection","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","preRender","TreeGridLocale","initProperties","defaultLocale","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","l10n","L10n","locale","sortByColumn","isMultiSort","sortModule","sortColumn","clearSorting","removeSortColumn","search","searchString","autoFitColumns","fieldNames","resizeModule","updateColumnModel","reorderColumns","fromFName","toFName","localeObject","gridLocale","treeGridLocale","load","printModule","treeGridkeyActionHandler","allowKeyboard","parentTarget","summaryElement","expandAll","collapseAll","expandCollapseRequest","parentElement","findnextRowElement","selectRow","cellIndex","row_1","clearSelection","findPreviousRowElement","rIndex","cIndex","summaryRowElement","previousElementSibling","columnModel","isExpandAll","isCollapseAll","keyConfigs","ctrlDownArrow","ctrlUpArrow","ctrlShiftUpArrow","ctrlShiftDownArrow","downArrow","upArrow","offline","RemoteSaveAdaptor","wireEvents","EventHandler","mouseClickHandler","keyboardModule","KeyboardEvents","keyAction","eventName","tabIndex","requiredModules","modules","getGridColumns","member","toolbar","contextMenuItems","allowExcelExport","detailTemplate","allowPdfExport","showColumnChooser","extendRequiredModules","allowAdding","allowDeleting","isCommandColumn","allowSelection","some","commands","commandsTemplate","unwireEvents","remove","loggerModule","render","isVue","createSpinner","dataModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","height","gridRequiredModules","appendTo","renderComplete","destroyTemplateFn","clearTemplate","afterGridRender","griddata","bindGridProperties","bindedDataSource","enableRtl","columnQueryMode","getActualProperties","pagerTemplate","infiniteScrollSettings","enableAltRow","enableHover","enableAutoFill","enableAdaptiveUI","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","triggerEvents","bindGridEvents","rowSelecting","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","events.rowSelected","events.rowDeselected","resizeStop","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","rowDeselecting","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","resizeStart","resizing","columnDrag","columnDragStart","columnDrop","beforePrint","beforeCopy","beforePaste","TreeLogger","printComplete","actionFailure","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","lastRowBorder","visiblerow","isAddBorder","isPixelHeight","dataBound","updateRowTemplate","updateAltRow","req","totalRows","persistSelection","callBackPromise_1","Deferred","beforeDataBoundArgs","resolve","callBackPromise","events.toolbarClick","toolbarargs","cellSelecting","cellselectingArgs","events.beginEdit","begineditArgs","isExpandRefresh","events.dataStateChange","isContextMenuOpen","contextitems","contextMenuModule","contextMenu","events.cellSave","cellsaveArgs","events.cellSaved","promise","events.cellEdit","events.batchAdd","events.beforeBatchSave","events.beforeBatchAdd","events.batchDelete","events.beforeBatchDelete","events.batchCancel","treeColumnRowTemplate","datacount","defaultQuery","JsonAdaptor","dataManager","isQueryInvokedFromData","events.actionBegin","updateTreeGridModel","events.beginAdd","ag","showChildSummary","refresh","events.recordDoubleClick","events.detailDataBound","events.contextMenuClick","events.contextMenuOpen","events.rowDragStartHelper","rowDragStart","rowDrag","isEdit","events.rowdraging","rowDrop","events.rowDropped","registeredTemplate","allowEditOnDblClick","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","text","getConstant","tooltipText","Search","prefixIcon","isEmptyColumnModel","treeGridColumn","gridColumn","gridColumnCollection","_i","_a","onPropertyChanged","newProp","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","closeEdit","treeGridElement","hasTreeGridChild","removeListener","dataBind","document","getElementById","getPersistData","keyEntity","ignoreOnPersist","currentObject","val","ignoreInArrays","addOnPersist","ignoreOnColumn","ignoreInColumn","touches","isEditCollapse","getPager","addRecord","position","saveCell","updateCell","updateRow","deleteRecord","fieldName","startEdit","editCell","enableToolbarItems","isEnable","toolbarModule","enableItems","endEdit","openColumnChooser","x","y","columnChooserModule","deleteRow","setCellValue","primaryKey","goToPage","pageNo","pagerModule","updateExternalMessage","getCellFromIndex","getColumnByField","iterateArrayOrObject","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByField","getColumnHeaderByIndex","getColumnHeaderByUid","getColumnIndexByField","getVirtualColIndexByUid","isRefresh","gridColumns","stackedHeader","refreshReactColumnTemplateByUid","columnUid","rowsObj","indent","getIndentCount","getNormalizedColumnIndex","isDataRow","cellRenderer","CellRenderer","serviceLocator","td","refreshTD","getContent","mergeColumns","storedColumn","getDataRows","dRows","getHeaderTable","getRowInfo","getUidByColumnField","cols","visible","getVisibleRecords","visibleRecords","indexes","refreshUI","refreshHeader","dialogObj","targetElement","rowInfo","collapseRow","expandRow","getCollapseExpandRecords","expandingArgs","expandCollapse","expandCollapseAllChildren","collapseArgs","setHeightForFrozenContent","freeze","refreshScrollOffset","collapsingArgs","events.collapsed","firstElementChild","scrollHeight","scrollTop","getRowHeight","scrollBy","expandAtLevel","expandAction","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","this_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","startIndex","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","detailrows","localExpand","sHeight","clientHeight","events.localPagedExpandCollapse","deff","data_1","length_1","rows_1","args_1","collapseRemoteChild","movableRows","freezeRightRows","rows_2","getMovableRows","getFrozenRightRows","visibleRowCount","gridRow","rcell","arg","movablerows","rightrows","collapsingTd","collapse","expandElement","cRow","eRows","i_1","updateResultModel","returnResult","filterByColumn","filterOperator","filterValue","predicate","matchCase","ignoreAccent","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","isToggle","selectRows","selectCell","getSelectedRows","getMovableCellFromIndex","getFrozenRightRowByIndex","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","cnt","isFrozen","getSelectedRowCellIndexes","baseModule","treeModule","reorderRows","fromIndexes","toIndex","rowDragAndDropModule","Complex","RowDropSettings","Event","NotifyPropertyChanges","Component","Reorder","GridReorder","getTreeColumn","treeIndex","updatedCols","f","Resize","GridResize","fName","RowDD","canDrop","isDraggedWithChild","isaddtoBottom","GridDragDrop","getChildrecordsByParentID","Rowdraging","events.rowsAdd","rowsAdded","events.rowsRemove","rowsRemoved","tObj","dropPosition","dropIndex","dropRows","orderToIndex","dropData","totalRecord","parentrow","updatedParent","draggedRecord","dragRecords","draggedRecord_1","dragRecords_1","deleteDragRow","refreshGridDataSource","tempDataSource","idx","droppedRecord","proxy","removeFirstrowBorder","canremove","removeLastrowBorder","isEmptyRow","islastRowIndex","updateIcon","rowEle","rowPositionHeight","addErrorElem","rowTop","toolHeight","offsetHeight","positionOffSet","getOffset","contentHeight","top","offsetTop","divide","topRowSegment","middleRowSegment","bottomRowSegment","mouseEvent","touchEvent","posy","pageY","changedTouches","isTopSegment","isMiddleRowSegment","isBottomRowSegment","removeChildBorder","removetopOrBottomBorder","addFirstrowBorder","removeErrorElem","topOrBottomBorder","addRemoveClasses","addLastRowborder","borderElem","targetRow","node","div","gridheaderEle","toolbarHeight","getToolbar","multiplegrid","offsetWidth","getScrollWidth","trElement","bottomborder","gridcontentEle","bottom","scrollElem","scrollWidth","Scroll","getScrollBarWidth","dragelem","ele","errorVal","content","parentNode","removeChild","spanContent","paddingLeft","errorelem","border","box","getBoundingClientRect","body","docElem","documentElement","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","left","round","cloneElement","cursor","rowIdx","ensuredropPosition","dropElement","ej2_instances","dragDropGrid","fromIndex","getTargetIdx","srcControl","targetIndex","isNaN","actualData","srcControlFlatData","actualIndex","selectedRecord","isByMethod","draggedRecord_2","isMultipleGrid","dragLength","reverse","_loop_2","correctIndex","offsetParent","newParentIndex","recordIndex1","dropAtTop","getChildCount","droppedRecordIndex","updateChildRecordLevel","updateChildRecord","dropMiddle","nonRepeat_1","childRecordsLength","recordLevel","childItem","deletedRow","removeRecords","flatParentData","childIndex","removeChildItem","idz","parentIndex","deletedRecordCount","i_2","i_3","draggedRecords","TreeVirtualRowModelGenerator","events.dataListener","getDatas","visualData","getDataInfo","getData","generateRows","virtualInfo","info","blockIndexes","getBlockIndexes","url","checkAndResetCache","clear","cache","groups","getBlockSize","VirtualRowModelGenerator","Filter","GridFilter","isHierarchyFilter","flatFilteredData","filteredParentRecs","updatedFilteredRecord","clearFilterLevel","dataDetails","addParentRecord","ischild","checkChildExsist","parent_1","parRecord","updateParentFilteredRecord","updateFilterLevel","uniqueIDValue","childRec","isExist","parent_2","parent_3","fLevel","ExcelExport","GridExcel","updateExcelResultModel","exportRowDataBound","finalPageSetup","isCsv","Promise","isLocal","event.beforeExcelExport","customData","manipulateExportProperties","book","dtSrc","queryResult","flatsData","dataSrc","excelRow","excelrowobj","rowObj","filtercolumnlength","rowlength","excelRows","rowlevel","Boolean","expandedStatus","sublevelState","state","grouping","outlineLevel","isCollapsed","worksheets","pageSetup","isSummaryRowBelow","PdfExport","GridPdf","updatePdfResultModel","event.beforePdfExport","customsData","manipulatePdfProperties","flatDatas","paragraphIndent","Page","GridPage","collapseExpandPagedchilds","pageAction","primaryKeyField_1","ret","pageRoot","pagedResults","newResults","t","res","pageingDetails","propname","skip","size","pageSize","take","dm_1","or","parents_1","floor","Toolbar","tool","refreshToolbar","toolbarClickHandler","Aggregate","GridAggregate","flatChildRecords","isSort","flatRecords","summaryLength","dataLength","getChildRecordsLength","summaryRowIndex","len_1","createSummaryItem","idx_1","currentIndex","summaryParent","length_2","itemData","summary","displayColumn","keys_1","getSummaryValues","summaryColumn","single","getFormatFromType","tempObj","requiresCount","summaryKey","sumData","toLowerCase","calculateAggregate","disp","value_1","summaryformat","Sort","GridSort","flatSortedData","updateModel","createdSortedRecords","sortParams","iterateSort","childSort","ColumnMenu","GridColumnMenu","getColumnMenu","columnMenuModule","ContextMenu","cmenu","addRow","editRecord","BatchEdit","batchChildCount","batchAddedRecords","batchDeletedRecords","batchAddRowRecord","batchRecords","isAdd","batchPageAction","batchCancelAction","immutableBatchAction","nextCellIndex","getBatchRecords","getAddRowIndex","getSelectedIndex","getBatchChildCount","actualCellIndex","frozenCols","columnObject","getColumnByIndex","added","primaryKey_1","currentDataIndex","indexvalue","rowObjectIndex","getActualRowObjectIndex","newBatchRowAdded","changes","batchIndex","primaryParent","childRecordCount","updateChildCount","updateRowIndex","focusModule","table","matrix","childs","primarykey","parentRowIndex","getRowElementByUID","totalCount","selectedRecords","mRows","deleterecords","deleteUniqueID","positionIndex","updatedRecords","primarykey_1","addRecords","totalRecords","endIndex","indexValue","Edit","prevAriaRowIndex","isAddedRowByMethod","GridEdit","previousNewRowPosition","internalProperties","batchEditModule","events.keyPressed","lastCellTab","contentready","editActionEvents","events.doubleTap","gridDblClick","customCellSave","savePreviousRowPosition","events.beforeStartEdit","events.beforeBatchCancel","resetIsOnBatch","getRowPosition","doubleClickTarget","addArgs","ariaRowIndex","applyFormValidation","eventArgs","treeObj","keyData","paramsLength","infiniteAddAction","rowObjects","newRowObject","newRowObjectIndex","newRecord","updateInfiniteCurrentViewData","movableRowsObject","getMovableRowsObject","isCache","enableCache","resetRowIndex","updateIndex","newRowIndex","dataIndex","infiniteCurrentViewData","infiniteScrollModule","isOnBatch","updateGridEditMode","keyPress","prom","celleditArgs","request","toolbarID","cellDetails","treeCell","afterCellSave","form","rowIndex_1","primaryKeys_1","isTabLastRow","update","fromTable","previousValue","editArgs","filterChoiceCount","excelSearchOperator","mRow","aggregateModule","destroyWidgets","formObj","restoreFocus","saveArgs","previousData","data1","treeColIndex","l","data2","treecell","firstAriaIndex","lastAriaIndex","withinRange","isVirtualization","focussedElement","activeElement","newFreezeRowObject","rightFrozenRows","errors","focus","primaryKeys_2","selector","beginAddEdit","childRecordCount1","currentDataIndex1","deletedValues","previousEditMode","previousGridEditMode","editFormValidate","destroyForm","CommandColumn","Command","DetailRow","detailrow","dataBoundArg","detaildataBound","setIndentVisibility","childRowExpand","rowExpandCollapse","actioncomplete","detailele","elements","detailData","detailRowElement","detailElement","previousSibling","expandClass","classlist","gridClas","gridclass","newNo","detailClass","spann","updtdcolum","focusElement","VirtualTreeContentRenderer","locator","isExpandCollapse","translateY","maxiPage","recordAdded","preTranslate","isRemoteExpand","getModelGenerator","events.virtualActionArgs","virtualOtherAction","events.indexModifier","setTop","nextSetResIndex","lastIndex","onDataReady","refreshContentRows","observers","observes","scrollArgs","scrollListeners","onEnteredAction","dataBoundEvent","rowSelectedEvent","toSelectVirtualRow","onActionComplete","virtualEditSuccess","resetIseditValue","cancelEdit","toSelectRowOnContextOpen","refreshCell","cellFocus","setVirtualHeight","contents","debounceEvent","TreeInterSectionObserver","getPanel","getTranslateY","sTop","cHeight","isOnenter","initialRowTop","gridTop","containerRect","observer","generateCells","generateCell","rowId","cellType","colSpan","oIndex","foreignKeyData","isDataCell","isTemplate","rowID","Data","isForeignKey","isForeignColumn","Cell","rowPosition","withInRange","restoreEditState","restoreNewRow","isWheel","isIE","xAxis","axis","getColumnOffset","vgenerator","getColumnIndexes","columnIndexes","cOffsets","maxLeft","virtualEle","adjustTable","header","sentinel","outBuffer","upScroll","offset","downScroll","vHeight","lastInx","remains","rowPt","firsttdinx","isLastBlock","viewInfo","previousInfo","setColumnIndexesInView","loadSelf","event","appendContent","newChild","sentinelInfo","cBlock","cOffset","setWrapperWidth","name","getTable","VirtualContentRenderer","isWheeling","newPos","lastPos","timer","callback","onEnterCallback","virtualScrollHandlers","delay","debounced50","debounce","prevTop","prevLeft","movableContainer","scrollbar","delta","clearTimeout","setTimeout","preventDefault","returnValue","axes","entered","InterSectionObserver","VirtualScroll","prevstartIndex","prevendIndex","TreeVirtual","returnVisualData","collapseExpandVirtualchilds","virtualPageAction","expandCollapseRec","counts","resourceCount","sIndex","instantiateRenderers","parentGrid","renderer","getService","RenderType","Header","VirtualHeaderRenderer","Content","ensurePageSize","GridVirtualScroll","Freeze","FreezeColumn","dblClickHandler","frozenRightRows","frozenrows","rData","queryselector","freezeModule","ColumnChooser","GridColumnChooser","X","Y","InfiniteScroll","GridInfiniteScroll","infinitePageAction","infiniteRemoteExpand","infiniteDeleteHandler","infiniteEditHandler","createRows","rowRenderer","RowRenderer","childRowObjects","childRowElements","initialBlocks","maxBlocks","firstIndex","rowElms","keyField","removeRows","mRowElms","tbody","currentRows","isMovable","isFrozenRight","isFrozenGrid","getMovableVirtualContent","getFrozenVirtualContent","isFrozenRows","getMovableVirtualHeader","getFrozenVirtualHeader","newRow"],"mappings":"shBAQA,SAAgBA,EAAaC,GACzB,GAAIA,EAAOC,sBAAsBC,cAAa,CAC1C,IAAIC,EAAUH,EAAOC,WAAWE,QAChC,OAAQA,aAAmBC,gBACtBD,aAAmBE,iBAAmBF,aAAmBG,oBACzDH,aAAmBI,gBAAiBJ,aAAmBK,aAEhE,OAAO,EAMX,SAAgBC,EAAgBT,GAC5B,SAAIA,EAAOC,YAAc,WAAYD,EAAOC,YAShD,SAAgBS,EAAiBV,GAC7B,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAOY,QAAQC,OAAQF,IACvC,GAAIX,EAAOY,QAAQD,GAAGG,aAClB,OAAO,EAGf,OAAO,EAMX,SAAgBC,EAAuBf,GACnC,SAAMgB,oBAAkBhB,EAAOiB,KAAKC,eAAeC,MAA2C,KAAnCnB,EAAOiB,KAAKC,eAAeC,KACzC,UAAxCnB,EAAOkB,eAAeE,eAAqE,SAAxCpB,EAAOkB,eAAeE,kBACzEpB,EAAOqB,iBAAkBrB,EAAOiB,KAAKK,eAAeV,QAAQC,QAChB,UAAxCb,EAAOsB,eAAeF,eAAqE,SAAxCpB,EAAOsB,eAAeF,gBAUtF,SAAgBG,EAAkBC,GAG9B,IAAK,IAFDC,KAEKd,EAAI,EAAGe,EADIC,OAAOC,KAAKJ,GAASX,OACJF,EAAIe,EAAKf,IAAK,CAChCkB,YAAU,kBAAmBL,EAAQb,KAEhDc,EAAMK,KAAKN,EAAQb,IAG3B,OAAOc,EASX,SAAgBM,EAAgB/B,EAAQgC,EAAQC,GAC5C,IAEIC,EAFAC,EAAenB,oBAAkBgB,EAAOI,YAAc,KACtDC,EAAcrC,EAAQgC,EAAOI,WAAWE,UAE5C,OAAoB,MAAhBH,KACInC,EAAOuC,eAAkBvB,oBAAkBmB,EAAanC,EAAOwC,sBAC3DL,EAAanC,EAAOwC,qBAIO,IAA1BL,EAAaM,YAGbN,EAAaC,cAClBF,EAAcG,EAAcrC,EAAQmC,EAAaC,WAAWE,YACzCtC,EAAOuC,gBAAkBvB,oBAAkBkB,EAAYlC,EAAOwC,uBACzEN,EAAYlC,EAAOwC,qBACvBN,EAAYO,UAAW,GAChB,KAEPP,IAAwC,IAAzBA,EAAYO,aAGtBP,GACEH,EAAgB/B,EAAQkC,EAAaD,OAjBhDE,EAAaM,UAAW,GACjB,IAiCnB,SAAgBC,EAAoBlB,GAChC,IAAIC,KACJ,GAAIT,oBAAkBQ,KAAcA,EAAQmB,kBAAoB3B,oBAAkBQ,EAAQoB,gBAClFpB,EAAQoB,aAAa/B,OACzB,SAEJ,IAAKG,oBAAkBQ,EAAQoB,cAE3B,IAAK,IADDA,EAAepB,EAAQoB,aAClBjC,EAAI,EAAGe,EAAMC,OAAOC,KAAKgB,GAAc/B,OAAQF,EAAIe,EAAKf,IAC7Dc,EAAMK,KAAKc,EAAajC,KACpBiC,EAAajC,GAAGgC,kBAAqB3B,oBAAkB4B,EAAajC,GAAGiC,eACvEA,EAAajC,GAAGiC,aAAa/B,UAC7BY,EAAQA,EAAMoB,OAAOH,EAAoBE,EAAajC,MAIlE,OAAOc,EAMX,SAAgBqB,EAAU9C,GACtB,GAAID,EAAaC,GAAS,CACtB,IAAI+C,EAAK/C,EAAOC,WAChB,OAAQe,oBAAkB+B,EAAGC,OAEjC,OAAO,EAMX,SAAgBC,EAAYC,GAIxB,IAAK,IAFDC,EACAvB,EAFAwB,KAGKzC,EAAI,EAAGuC,GAASvC,EAAIuC,EAAMrC,OAAQF,IAAK,CAC5CiB,EAAOD,OAAOC,KAAKsB,EAAMvC,IACzBwC,KACA,IAAK,IAAIE,EAAI,EAAGA,EAAIzB,EAAKf,OAAQwC,IAC7BF,EAAIvB,EAAKyB,IAAMH,EAAMvC,GAAGiB,EAAKyB,IAEjCD,EAAOtB,KAAKqB,GAEhB,OAAOC,EAMX,SAAgBE,EAAaC,GAQzB,cAPOA,EAAMZ,uBACNY,EAAMX,oBACNW,EAAMC,aACND,EAAMnB,kBACNmB,EAAME,aACNF,EAAMG,gBACNH,EAAMjB,SACNiB,EAQX,SAAgBlB,EAAcrC,EAAQuD,EAAOI,GACzC,GAAIA,EAAe,CAEf,OAAO3D,EAAe,yBAAEuD,GAIxB,OAAOvD,EAAS,mBAAEuD,GAO1B,SAAgBK,EAASC,GACrB,IAAIC,EAAQC,OAAOC,iBAAiBH,GACpC,MAA2B,SAAlBC,EAAMG,SAA6C,WAArBH,EAAMI,WCtLjD,SAAgBC,EAAWC,EAASC,EAASC,EAAiBC,EAAaC,EAAeC,EAAYC,GAClG,IAGI/D,EACA0C,EAEAsB,EANApB,EAAQa,EAAQb,MAChBqB,EAASR,EAAQQ,OAMjBzD,EAAMkD,EAAQpD,KAAK4D,0BAA0B,GAC7CC,EAAWT,EAAQpE,sBAAsBC,cACzCmE,EAAQpE,WAAWA,WAAW8E,KAAOV,EAAQpE,WAC7C+E,KACAC,EAAe1B,EACf2B,GAAS,EAIb,GAHkC,UAA9Bb,EAAQc,aAAaC,OACrBT,EAAeN,EAAQpD,KAAKoE,WAAWC,mBAE5B,QAAXV,GAAgC,cAAXA,GAAyD,UAA9BP,EAAQc,aAAaC,MAClET,EAAyB,aAAE9D,OAAU,CACxC,IAAI0E,EA0HZ,SAA0BnB,EAASU,EAAUT,EAASC,EAAiBC,EAAaC,EAAeE,GAC/F,IAAInB,EACA2B,GAAS,EACTM,EAAqBnB,EAAQpD,KAAKwE,wBAGtC,OAFAlC,EAAQmC,YAAWtB,EAAQb,OAC3BA,EAAQD,EAAaC,GACbc,EAAQc,aAAaQ,gBACzB,IAAK,MACDb,EAASc,QAAQrC,GACjB2B,GAAS,EACT,MACJ,IAAK,SACDJ,EAAShD,KAAKyB,GACd2B,GAAS,EACT,MACJ,IAAK,QAOG3B,EANCvC,oBAAkB0D,GAMXpB,EADRC,EAAQmC,YAAWF,EAAmBjB,EAAc,KAH5CjB,EADRC,EAAQmC,YAAWhB,IAOvB,MACJ,IAAK,QACL,IAAK,QACD,GAAK1D,oBAAkB0D,GAIlB,CACD,IAAImB,EAAcxB,EAAQpD,KAAK4D,0BAA0B,GACrDiB,EAAcN,EAAmBjB,GAOrChB,EAAQD,EALJC,GADCvC,oBAAkB8E,IAAgBA,EAAYD,KAAiBzB,EAAQb,MAAMsC,KAAmC,IAAnBrB,EACtFkB,YAAWI,GAGXJ,YAAWtB,EAAQb,QAI/Bc,EAAQgB,WAA2B,mBAAE3B,SAAWH,OAbhDA,EAAQD,EADRC,EAAQmC,YAAWhB,KAgBA,IAAnBF,IACAM,EAASc,QAAQrC,GACjB2B,GAAS,GAGrB,OAAS3B,MAAOA,EAAO2B,OAAQA,GA3Kda,CAAU3B,EAASU,EAAUT,EAASC,EAAiBC,EAAaC,EAAeE,GAChGnB,EAAQgC,EAAOhC,MACf2B,EAASK,EAAOL,OAQpB,GANI3B,aAAiByC,MACjBhB,EAAe/B,EAAYM,GAG3ByB,EAAalD,KAAK4D,YAAWnC,KAE5B2B,IAAsB,QAAXN,GAC6B,QAAxCP,EAAQc,aAAaQ,gBAAoE,WAAxCtB,EAAQc,aAAaQ,gBACvE,IAAK,IAAIM,EAAI,EAAGA,EAAIjB,EAAanE,OAAQoF,IAAK,CACJ,iBAA1BjB,EAAaiB,GAAG9E,KACxB6D,EAAaiB,GAAKjB,EAAaiB,GAAG9E,IAEtC,IAAIS,EAAOoD,EAAaiB,GAAGvC,SAAW/B,OAAOC,KAAKoD,EAAaiB,GAAGvC,UAC9D/B,OAAOC,KAAKoD,EAAaiB,IAC7BtF,EAAImE,EAASjE,OAkFb,IAjFA,IAAIqF,EAAU,WACV,GAAIpB,EAASnE,GAAGQ,KAAS6D,EAAaiB,GAAG9E,GAAM,CAC3C,GAAe,WAAXyD,EAwBC,CACD,GAAe,SAAXA,GACA,IAAKvB,EAAI,EAAGA,EAAIzB,EAAKf,OAAQwC,IACzB,GAAI1B,OAAOwE,UAAUC,eAAeC,KAAKvB,EAASnE,GAAIiB,EAAKyB,MAAuC,SAA9BgB,EAAQc,aAAaC,OAChFpE,oBAAkB2D,IAAyD,IAAxCA,EAA2B,eAAE9D,QAClEe,EAAKyB,KAAOoB,GAAa,CAC5B,IAAI6B,EAAajE,EAAcgC,EAASW,EAAaiB,GAAG3D,UACxDwC,EAASnE,GAAGiB,EAAKyB,IAAM2B,EAAaiB,GAAGrE,EAAKyB,IACxCiD,GAAcA,EAAW5C,WACzB4C,EAAW5C,SAAS9B,EAAKyB,IAAMiD,EAAW1E,EAAKyB,IAAMyB,EAASnE,GAAGiB,EAAKyB,WAKjF,GAAe,QAAXuB,GAA+B,cAAXA,EAAwB,CACjD,IAAIpB,OAAQ,EACgC,UAAxCa,EAAQc,aAAaQ,eACjBrB,GACAW,EAAavB,SAASW,EAAQkC,iBAAmBzB,EAASnE,GAAG0D,EAAQmC,WACrE1B,EAAS2B,OAAO9F,EAAI,EAAG,EAAGsE,EAAavB,YAGlC/B,OAAOwE,UAAUC,eAAeC,KAAKvB,EAASnE,GAAI0D,EAAQqC,gBAC3D5B,EAASnE,GAAG0D,EAAQqC,kBAExB5B,EAASnE,GAAG0D,EAAQqC,cAAc5E,KAAKmD,EAAavB,UACpDiD,EAAgBxF,EAAK2D,EAASnE,GAAIiE,EAAQP,EAASC,EAAiBW,IAG3B,UAAxCZ,EAAQc,aAAaQ,gBAC1Bb,EAAS2B,OAAO9F,EAAI,EAAG,EAAGsE,EAAavB,UAClC1C,oBAAkBiE,EAAa7C,aAChCuE,EAAgBxF,EAAK2D,EAASnE,EAAI,GAAIiE,EAAQP,EAASC,EAAiBW,IAGtEV,EAIuC,UAAxCF,EAAQc,aAAaQ,iBAC1Bb,EAAS2B,OAAO9F,EAAG,EAAGsE,EAAavB,UAC9B1C,oBAAkBiE,EAAa7C,aAChCuE,EAAgBxF,EAAK2D,EAASnE,GAAIiE,EAAQP,EAASC,EAAiBW,KANxEzB,EAAQ,EACRsB,EAAS2B,OAAOjD,EAAO,EAAGyB,EAAavB,WAS/C,MAAO,QArEP,IAAIkD,EAAgB9B,EAASnE,GAE7B,GADAmE,EAAS2B,OAAO9F,EAAG,GACf2D,EAAiB,CACjB,IAAKtD,oBAAkB4F,EAAcvC,EAAQkC,kBAKzC,IAAK,IAJDM,EAAaxC,EAAQyC,SAASC,OAAO,SAAUC,GAC/C,OAAOA,EAAE3C,EAAQmC,aAAeI,EAAcvC,EAAQkC,mBACvD,GACC3D,EAAeiE,EAAaA,EAAWxC,EAAQqC,iBAC1CO,EAAIrE,EAAa/B,OAAS,EAAGoG,GAAK,EAAGA,IAC1C,GAAIrE,EAAaqE,GAAG5C,EAAQmC,aAAeI,EAAcvC,EAAQmC,WAAY,CACzEK,EAAyB,aAAEJ,OAAOQ,EAAG,GACrCrE,EAAa6D,OAAOQ,EAAG,GAClBrE,EAAa/B,SACdgG,EAAWlE,iBAAkB,EAC7BgE,EAAgBxF,EAAK0F,EAAYjC,EAAQP,EAASC,IAEtD,MAIZ,MAAO,cAoDTtD,oBAAkB8D,EAASnE,GAAG0D,EAAQqC,gBACxCQ,EAAmBpC,EAASnE,GAAG0D,EAAQqC,cAAe1B,EAAaiB,GAAIrB,EAAQzD,EAAKkD,EAASC,EAAiBW,EAAcR,IAC5HkC,EAAgBxF,EAAK2D,EAASnE,GAAIiE,EAAQP,EAASC,IAIxD3D,KAAOA,GAAK,GAAG,CAElB,GAAgB,UADFuF,IAEV,QAiFpB,SAAgBgB,EAAmBtE,EAAcoC,EAAcJ,EAAQzD,EAAKkD,EAASC,EAAiBW,EAAcR,GAGhH,IAFA,IAAI0C,GAAa,EACb9D,EAAIT,EAAa/B,OACdwC,KAAOA,GAAK,GACf,GAAIT,EAAaS,GAAGlC,KAAS6D,EAAa7D,IACrCmD,GAAmB1B,EAAaS,GAAGgB,EAAQkC,mBAAqBvB,EAAaX,EAAQmC,WAAa,CACnG,GAAe,SAAX5B,EAAmB,CAGnB,IAAK,IAFDhD,EAAOD,OAAOC,KAAKoD,GACnBsB,EAAajE,EAAcgC,EAASW,EAAa1C,UAC5C3B,EAAI,EAAGA,EAAIiB,EAAKf,OAAQF,IAC7B,GAAIgB,OAAOwE,UAAUC,eAAeC,KAAKzD,EAAaS,GAAIzB,EAAKjB,MAAsC,SAA9B0D,EAAQc,aAAaC,MAAmBxD,EAAKjB,KAAO8D,KACvH6B,EAAW1E,EAAKjB,IAAM2F,EAAW5C,SAAS9B,EAAKjB,IAAMiC,EAAaS,GAAGzB,EAAKjB,IAAMqE,EAAapD,EAAKjB,IAC3D,WAAnC0D,EAAQpD,KAAKkE,aAAaC,MAAmD,SAA9Bf,EAAQc,aAAaC,MAAiB,CAErFf,EAAQpD,KAAKoE,WAAqB,WAAE+B,aAAepC,EAAaxB,MAChEa,EAAQpD,KAAKoE,WAAqB,WAAEgC,sBAAsBrC,GAItE,MAEgB,QAAXJ,GAA+B,cAAXA,EACmB,UAAxCP,EAAQc,aAAaQ,eACjBrB,GACAW,EAAaZ,EAAQkC,iBAAmB3D,EAAaS,GAAGgB,EAAQmC,WAChE5D,EAAa6D,OAAOpD,EAAI,EAAG,EAAG4B,GAC9B0B,EAAgBxF,EAAKyB,EAAaS,GAAIuB,EAAQP,EAASC,EAAiBW,KAGnEtD,OAAOwE,UAAUC,eAAeC,KAAKzD,EAAaS,GAAIgB,EAAQqC,gBAC/D9D,EAAaS,GAAGgB,EAAQqC,kBAE5B9D,EAAaS,GAAGgB,EAAQqC,cAAc5E,KAAKmD,EAAavB,UACxDiD,EAAgBxF,EAAKyB,EAAaS,GAAIuB,EAAQP,EAASC,EAAiBW,IAG/B,UAAxCZ,EAAQc,aAAaQ,gBAC1B/C,EAAa6D,OAAOpD,EAAG,EAAG4B,EAAavB,UAClC1C,oBAAkBiE,EAAa7C,aAChCuE,EAAgBxF,EAAKyB,EAAaS,GAAIuB,EAAQP,EAASC,EAAiBW,IAG/B,UAAxCZ,EAAQc,aAAaQ,iBAC1B/C,EAAa6D,OAAOpD,EAAI,EAAG,EAAG4B,EAAavB,UACtC1C,oBAAkBiE,EAAa7C,aAChCuE,EAAgBxF,EAAKyB,EAAaS,GAAIuB,EAAQP,EAASC,EAAiBW,KAKhFrC,EAAa6D,OAAOpD,EAAG,GAClBT,EAAa/B,SACdsG,GAAa,SAIfnG,oBAAkB4B,EAAaS,GAAGgB,EAAQqC,gBAC5CQ,EAAmBtE,EAAaS,GAAGgB,EAAQqC,cAAe1B,EAAcJ,EAAQzD,EAAKkD,EAASC,EAAiBW,EAAcR,IAC7HkC,EAAgBxF,EAAKyB,EAAaS,GAAIuB,EAAQP,EAASC,GAInE,OAAO6C,EAWX,SAAgBR,EAAgBxF,EAAKa,EAAQ4C,EAAQP,EAASC,EAAiBgD,GAC3E,GAA6C,UAAxCjD,EAAQc,aAAaQ,gBAAsE,UAAxCtB,EAAQc,aAAaQ,gBACzD,QAAXf,GAA+B,cAAXA,GAA6B5D,oBAAkBsG,EAAMlF,YAI7E,CACD,IACImF,EADAC,EAAiBnD,EAAQpD,KAAKwE,wBAkBlC,GAhBA+B,EAAeC,IAAI,SAAUT,EAAGrG,GAASqG,EAAE7F,KAASa,EAAOb,KACvDoG,EAAU5G,KAGTK,oBAAkBuG,KACnBvF,EAASwF,EAAeD,IAExBlD,EAAQqD,sBAAwB1G,oBAAkBgB,KAAYhB,oBAAkBsG,KAChFtF,EAAS2F,WAAS,sBAAwBL,EAAMM,eAAgBvD,IAE/DC,GAAoBtD,oBAAkBgB,EAAOY,gBAAiBZ,EAAOY,aAAa/B,OAInFmB,EAAOW,iBAAkB,EAHzBX,EAAOW,iBAAkB,EAKd,QAAXiC,GAA+B,cAAXA,EAAwB,CAC5C5C,EAAOS,UAAW,EAClBT,EAAOW,iBAAkB,EACrB0B,EAAQwD,aAAajH,QAAQC,QAAUG,oBAAkBsG,KACzDA,EAAQE,EAAeT,OAAO,SAAUC,GACpC,OAAIA,EAAEY,iBAAmB5F,EAAOM,SACrB0E,EAGA,QAInB,IAAIpE,EAAe0E,EAAQA,aAAiBtB,MAAQsB,EAAM,GAAKA,EAAQE,EAAeD,EAAU,GACpD,UAAxClD,EAAQc,aAAaQ,iBAChBhE,OAAOwE,UAAUC,eAAeC,KAAKrE,EAAQ,gBAIzChB,oBAAkBsG,IAAUtF,EAAOb,KAASmG,EAAMnG,IACnDa,EAAOY,aAAad,KAAKwF,GAJ7BtF,EAAOY,iBAOwC,IAA/CZ,EAAOY,aAAakF,QAAQlF,IAAwBZ,EAAOb,KAASmG,EAAMnG,IAC1Ea,EAAOY,aAAagD,QAAQhD,GAE5B0B,IACK3C,OAAOwE,UAAUC,eAAeC,KAAKrE,EAAQqC,EAAQqC,gBACtD1E,EAAOqC,EAAQqC,mBAEyC,IAAxD1E,EAAOqC,EAAQqC,cAAcoB,QAAQlF,IAAwBZ,EAAOb,KAASmG,EAAMnG,IACnFa,EAAOqC,EAAQqC,cAAcd,QAAQhD,KAQrD,IAAK,IAHDiD,EAAcxB,EAAQpD,KAAK4D,0BAA0B,GACrDkD,EAAO1D,EAAQpD,KAAKhB,sBAAsBC,cAC1CmE,EAAQpD,KAAKhB,WAAWA,WAAW8E,KAAOV,EAAQpD,KAAKhB,WAClDU,EAAI,EAAGA,EAAIoH,EAAKlH,OAAQF,IAC7B,GAAIoH,EAAKpH,GAAGkF,KAAiB7D,EAAO6D,GAAc,CAC9CkC,EAAKpH,GAAKqB,EACV,MAGRqC,EAAQpD,KAAK+G,WAAW7G,EAAKa,GAC7B,IAAIiG,EAAM5D,EAAQ6D,cAAcX,GACE,UAA9BlD,EAAQc,aAAaC,OACrB6C,EAAM5D,EAAQ8D,UAAU9D,EAAQpD,KAAKmH,wBAAwBpG,EAAOb,MAExE,IAAIkH,OAAa,EAIjB,IAHIhE,EAAQiE,YAAcjE,EAAQkE,sBAC9BF,EAAahE,EAAQmE,qBAAqBjB,KAEzClD,EAAQqD,uBAAyB1G,oBAAkBiH,KAASjH,oBAAkBqH,GAAa,CAC5F,IAAII,EAAUpE,EAAQqE,gBAClBrE,EAAQsE,qBAAuBtE,EAAQuE,sBACvCH,GAAoB,GAExBpE,EAAQwE,aAAaC,YACjBf,KAAM/F,EAAQ+G,KAAMd,EAAIe,MAAMP,GAAWR,EAAIe,MAAMP,GAC7CJ,EAAWW,MAAMP,EAAUpE,EAAQkE,oBACzCU,OAAQ5E,EAAQpD,KAAKiI,aAAa7E,EAAQqE,iBAC1CS,YAAavE,SAtFsE,CAC1EvC,EAAcgC,EAASiD,EAAMlF,WAAWE,UAC9CM,aAAad,KAAKwF,ICrSrC,IAAI8B,EAAwB,WACxB,SAASA,EAAOC,GAOZC,KAAKC,cAAe,EAMpBD,KAAKE,QAMLF,KAAKG,mBAAoB,EAOzBH,KAAKI,iBAAkB,EAOvBJ,KAAKK,gBAAiB,EAOtBL,KAAKjI,gBAAiB,EAOtBiI,KAAKM,cAAe,EAOpBN,KAAKO,eAAgB,EAWrBP,KAAKvC,UACL+C,QAAMR,KAAMD,GAqBhB,OAZAD,EAAOjD,UAAU4D,cAAgB,SAAUd,GAGvC,IAAK,IADDrH,EAAOD,OAAOC,KAAKqH,GACdtI,EAAI,EAAGA,EAAIiB,EAAKf,OAAQF,IAG7B,GAFA2I,KAAK1H,EAAKjB,IAAMsI,EAAOrH,EAAKjB,IAExB2I,KAAKtJ,QAAUsJ,KAAKtJ,OAAgB,SAAiB,aAAZ4B,EAAKjB,GAAmB,CAEjE2I,KAAKtJ,OAAOgK,gBAAgC,eAAiC,gCAAEV,KAAKW,OAIzFb,KC5FPc,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,EAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5DK,EAA2B,SAAUC,GAErC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAsC/D,OAxCAY,EAAUoB,EAAWC,GAIrBZ,GACIc,cACDH,EAAUnF,UAAW,aAAS,GACjCwE,GACIc,cACDH,EAAUnF,UAAW,gBAAY,GACpCwE,GACIc,cACDH,EAAUnF,UAAW,aAAS,GACjCwE,GACIc,cACDH,EAAUnF,UAAW,iBAAa,GACrCwE,GACIc,cACDH,EAAUnF,UAAW,oBAAgB,GACxCwE,GACIc,cACDH,EAAUnF,UAAW,iBAAa,GACrCwE,GACIc,gBACDH,EAAUnF,UAAW,yBAAqB,GAC7CwE,GACIc,gBACDH,EAAUnF,UAAW,sBAAkB,GAC1CwE,GACIc,cACDH,EAAUnF,UAAW,YAAQ,GAChCwE,GACIc,cACDH,EAAUnF,UAAW,mBAAe,GACvCwE,GACIc,cACDH,EAAUnF,UAAW,WAAO,GAC/BwE,GACIc,cACDH,EAAUnF,UAAW,oBAAgB,GACjCmF,GACTI,iBAKEC,EAAgC,SAAUJ,GAE1C,SAASI,IACL,OAAkB,OAAXJ,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KA0B/D,OA5BAY,EAAUyB,EAAgBJ,GAI1BZ,GACIiB,gBAAeN,IAChBK,EAAexF,UAAW,eAAW,GACxCwE,GACIc,WAAS,cACVE,EAAexF,UAAW,YAAQ,GACrCwE,GACIc,cACDE,EAAexF,UAAW,YAAQ,GACrCwE,GACIc,YAAS,IACVE,EAAexF,UAAW,2BAAuB,GACpDwE,GACIc,WAAS,OACVE,EAAexF,UAAW,0BAAsB,GACnDwE,GACIc,cACDE,EAAexF,UAAW,iBAAa,GAC1CwE,GACIc,YAAS,IACVE,EAAexF,UAAW,oBAAgB,GAC7CwE,GACIc,WAAS,WACVE,EAAexF,UAAW,qBAAiB,GACvCwF,GACTD,iBCpGExB,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,EAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5DY,EAAkC,SAAUN,GAE5C,SAASM,IACL,OAAkB,OAAXN,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAK/D,OAPAY,EAAU2B,EAAkBN,GAI5BZ,GACIc,WAAS,SACVI,EAAiB1F,UAAW,gBAAY,GACpC0F,GACTH,iBChCExB,EAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAoBxCsB,EAAU,oDACVC,EAAe,2CAMfC,GAAiB,EACjBC,EAAwB,SAAUV,GAElC,SAASU,EAAOjM,GAIZ,OAFAkM,OAAKC,OAAOC,UACJb,EAAOlF,KAAKiD,KAAMtJ,IAAWsJ,KAgFzC,OApFAY,EAAU+B,EAAQV,GAalBU,EAAO9F,UAAUkG,cAAgB,WAC7B,MAAO,UAEXJ,EAAO9F,UAAUmG,IAAM,SAAUC,EAAOC,GAC9BD,aAAiBvG,QACnBuG,GAASA,IAGb,IAAK,IADDE,EAAOF,EACF5L,EAAI,EAAGA,EAAI8L,EAAK5L,OAAQF,IAAK,CAClC,IAAI+L,EAAOC,cAAYF,EAAK9L,IACxBiM,EAAMF,EAAKG,MAAML,EAAMlD,KAAKtJ,QAChC,GAAI4M,EAAIE,QAAS,CACb,IAAIC,EAAUL,EAAKM,gBAAgBR,EAAMlD,KAAKtJ,OAAQ4M,EAAIvD,SAC1D0D,EAAUA,EAAQE,QAAQ,UAAW,eAAeA,QAAQ,mBAAoB,IAAIA,QAAQ,aAAc,IACtGjB,GAA8B,2BAAZS,EAAK9L,KACvBoM,EAAUA,EAAQE,QAAQ,UAAW,mBACrCjB,GAAiB,GAErB,IAAIxI,EAAQuJ,EAAQjF,QAAQ,SACxBoF,EAAUH,EAAQI,UAAU3J,GAChB,mBAAZiJ,EAAK9L,GACLoM,EAAUA,EAAQE,QAAQC,EAASpB,EAAU,YAE5B,2BAAZW,EAAK9L,IAA+C,0BAAZ8L,EAAK9L,GAClDoM,EAAUA,EAAQE,QAAQC,EAASnB,EAAe,sCAEjC,qBAAZU,EAAK9L,GACVoM,EAAUA,EAAQE,QAAQC,EAASpB,EAAU,SAE5B,mBAAZW,EAAK9L,GACVoM,EAAUA,EAAQE,QAAQC,EAASpB,EAAU,YAE5B,6BAAZW,EAAK9L,GACVoM,EAAUA,EAAQE,QAAQC,EAASpB,EAAU,YAE5B,mBAAZW,EAAK9L,KACVoM,EAAUA,EAAQE,QAAQC,EAASpB,EAAU,gCAEjC,+BAAZW,EAAK9L,GACAK,oBAAkBsI,KAAK8D,cAAiBpM,oBAAkBsI,KAAK8D,YAAYC,kBAE5EC,QAAQZ,EAAKa,SAASR,GAK1BO,QAAQZ,EAAKa,SAASR,MAKtCd,EAAO9F,UAAUqH,QAAU,SAAUjB,EAAOC,EAAMiB,GAC9CnE,KAAK8D,YAAcK,EACblB,aAAiBvG,QACnBuG,GAASA,IAEb,IAAIE,EAAOF,EACPkB,EAAS9E,sBAAwB8E,EAAS7M,QAAQmG,OAAO,SAAUkC,GAAU,OAAOA,EAAOyE,eAAiB7M,SAC5GmL,GAAiB,EACjB1C,KAAKgD,IAAI,yBAA0BE,IAEvC,IAAK,IAAI7L,EAAI,EAAGA,EAAI8L,EAAK5L,OAAQF,IAAK,CAClC,IAAI+L,EAAOiB,EAAgBlB,EAAK9L,IAC5BiM,EAAMF,EAAKG,MAAML,EAAMiB,GAC3B,GAAIb,EAAIE,QAAS,CACb,IAAIC,EAAUL,EAAKM,gBAAgBR,EAAMiB,EAAUb,EAAIvD,SAEvDiE,QAAQZ,EAAKa,SAASR,MAI3Bd,GACTG,UAESuB,GAEPC,wBACInB,KAAM,yBACNc,QAAS,QACTV,MAAO,SAAUL,EAAMxM,GACnB,IAAI6N,GAAQf,SAAS,GAOrB,OANK9L,oBAAkBhB,EAAOwG,YAAcxF,oBAAkBhB,EAAO0G,eAC9D1F,oBAAkBhB,EAAOuG,mBAC1BvF,oBAAkBhB,EAAOwG,YAAcxF,oBAAkBhB,EAAOuG,kBACjEvF,oBAAkBhB,EAAOwG,aAAexF,oBAAkBhB,EAAOuG,oBAClEsH,GAAQf,SAAS,IAEde,GAEXb,gBAAiB,WACb,MAAOc,iRAIF/B,EAAe,+BACfA,EAAe,4BACfA,EAAe,oCCrIrBgC,EAAe,eAIfC,EAAgB,gBAEhBC,EAAkB,kBAElBC,EAAc,cAEdb,EAAkB,kBAElBc,EAAiB,iBAIjBC,EAAc,cAEdC,EAAiB,iBAEjBC,EAAgB,gBAEhBC,EAAe,eAEfC,EAAoB,oBAEpBC,EAAkB,kBAIlBhM,EAAW,WAIXiM,EAAY,YAIZC,EAAe,eAEfC,EAA2B,2BAE3BC,EAAgB,gBAEhBC,EAAgB,iBAEhBC,EAAkB,kBAElBC,GAAmB,mBAQnBC,GAAa,aAEbC,GAAY,YAEZC,GAAW,WAEXC,GAAoB,oBAEpBC,GAAW,WAEXC,GAAY,YAEZC,GAAW,WAEXC,GAAc,cAEdC,GAAc,cAEdC,GAAW,WAEXC,GAAoB,oBAEpBC,GAAiB,iBAEjBC,GAAkB,kBAElBC,GAAY,YAEZC,GAAa,cAIbC,GAAY,aAIZC,GAAoB,sBAIpBC,GAAe,gBAEfC,GAAgB,iBAEhBC,GAAkB,YAElBC,GAAoB,sBAIpBC,GAAkB,kBAIlBC,GAAqB,qBAMrBC,GAAU,WAEVC,GAAa,cAEbC,GAAa,cAEbC,GAAa,cC/HpBzG,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAqBxCoG,GAA+B,SAAUrF,GAEzC,SAASqF,EAAc5Q,GACnB,IAAI6Q,EAAQtF,EAAOlF,KAAKiD,KAAMtJ,EAAOiB,OAASqI,KAI9C,OAHAuH,EAAMC,gBAAkB,GACxBD,EAAME,4BACNF,EAAMG,eAAiBhR,EAChB6Q,EAwJX,OA9JA3G,GAAU0G,EAAerF,GAQzBqF,EAAczK,UAAU8K,YAAc,SAAUC,GAC5C,IAAIC,EAAc,cAId3J,EAAiB8B,KAAK0H,eAAevL,wBACzC,GAAyC,KAArC1B,OAAOqN,eAAeC,WAAmB,CACzC/H,KAAKgI,kBAAkB/N,MAAQ+F,KAAK6H,GAAe,GACnD,IAAII,EAAOjI,KAAK0H,eAAe/P,KAAKkH,UACpC,GAAmD,SAA/CmB,KAAK0H,eAAeQ,kBAAkBpM,KAAiB,CAIvD,IAAK,IAHDqM,EAAkBnI,KAAK0H,eAAeU,wBAAwBC,KAAK,SAAUC,EAAGvH,GAChF,OAAOuH,EAAIvH,IAEN1J,EAAI,EAAGA,EAAI8Q,EAAgB5Q,OAAQF,IAIxC,GAHIA,EAAI,IACJ2I,KAAKwH,iBAAmB,OAEvBS,EAAKE,EAAgB9Q,IAAIkR,UAAUC,SAAS,gBAAiB,CAC9D,IAAI9I,KAAW+I,MAAM1L,KAAKkL,EAAKE,EAAgB9Q,IAAIqR,iBAAiB,eAChEC,EAAW3I,KAAK0H,eAAekB,qBAAqBvR,GAAW,UACV,IAArD2I,KAAKyH,yBAAyBjJ,QAAQmK,KACQ,WAA1C3I,KAAK0H,eAAemB,mBAA4E,SAA1C7I,KAAK0H,eAAemB,mBAC1E7I,KAAK8I,kBAAkB5K,EAAgBiK,EAAgB9Q,GAAI4Q,EAAML,EAAYvQ,GAEjF2I,KAAgB,YAAEN,GAAO,EAAO,KAAMkI,GACtC5H,KAAKwH,iBAAmBxH,KAAK6H,GAC7B7H,KAAKyH,yBAAyBjP,KAAKmQ,GACnC3I,KAAK6H,GAAe,GAC0B,UAA1C7H,KAAK0H,eAAemB,mBAA2E,SAA1C7I,KAAK0H,eAAemB,mBACzE7I,KAAK+I,iBAAiB7K,EAAgBiK,EAAgB9Q,GAAI4Q,EAAML,IAKhF,GAAIA,EAAY,CAEP,IADDoB,KACJ,IAAS3R,EAAI,EAAGA,EAAI2I,KAAK0H,eAAeuB,oBAAoB1R,OAAQF,IAChE2R,EAAgB3R,GAAK2I,KAAK0H,eAAeuB,oBAAoB5R,GAAG6R,WAEpElJ,KAAgB,YAAEgJ,GAAiB,EAAO,KAAMpB,GAChD5H,KAAKwH,gBAAkBxH,KAAK6H,GAAe,KAAO7H,KAAKwH,gBAE3D,IAAItE,GACAzE,KAAMuB,KAAKwH,gBACX2B,QAAQ,GAGZ,GADAnJ,KAAK0H,eAAe0B,QDrBZ,aCqBuClG,GAC3CA,EAAKiG,OACL,OAEJnJ,KAAKgI,kBAAkB/N,MAAQ+F,KAAK6H,GAAe3E,EAAKzE,KACnD4K,UAAQC,UAAUC,MAAM,qBAIzBvJ,KAAKgI,kBAAkBwB,kBAAkB,EAAGxJ,KAAKgI,kBAAkB/N,MAAM1C,QAHzEyI,KAAKgI,kBAAkByB,SAK3BzJ,KAAa,UAAI,EACjBA,KAAKyH,4BACLzH,KAAKwH,gBAAkB,QAGvBvF,EAAOpF,UAAU8K,YAAY5K,KAAKiD,KAAM4H,KAIpDN,EAAczK,UAAUiM,kBAAoB,SAAU5K,EAAgBhD,EAAe+M,EAAML,EAAY1N,GACnG,IACI2N,EAAc,cACd/O,EAAa,aACbE,EAAW,WAEf,IAAKtB,oBAAkBwG,EAAehD,GAAepC,IAEjD,IAAK,IADD4Q,EAAYxL,EAAehD,GAAepC,GAAiB,MACtDzB,EAAI,EAAGA,EAAIqS,EAAY,EAAGrS,IAC/B,IAAK,IAAI0C,EAAI,EAAGA,EAAImE,EAAe3G,OAAQwC,IACvC,IAAKrC,oBAAkBwG,EAAehD,GAAepC,KACjDoF,EAAenE,GAAGf,KAAckF,EAAehD,GAAepC,GAAYE,GAAW,CACrFkC,EAAgBnB,EAChB,IAAI2F,KAAW+I,MAAM1L,KAAKkL,EAAK/M,GAAewN,iBAAiB,eAC3DC,EAAWzK,EAAenE,GAAGf,GACjC,IAAyD,IAArDgH,KAAKyH,yBAAyBjJ,QAAQmK,GAAkB,CACxD3I,KAAgB,YAAEN,GAAO,EAAO,KAAMkI,GAElC5H,KAAKwH,gBADLtN,EAAQ,EACe8F,KAAKwH,gBAAkBxH,KAAK6H,GAAe,KAG3C7H,KAAK6H,GAAe,KAAO7H,KAAKwH,gBAE3DxH,KAAKyH,yBAAyBjP,KAAKmQ,GACnC3I,KAAK6H,GAAe,GACpB,SAOxBP,EAAczK,UAAU8M,KAAO,SAAU/B,GACrC3F,EAAOpF,UAAU8M,KAAK5M,KAAKiD,KAAM4H,IAErCN,EAAczK,UAAU+M,MAAQ,SAAUnL,EAAMoL,EAAUC,GACtD7H,EAAOpF,UAAU+M,MAAM7M,KAAKiD,KAAMvB,EAAMoL,EAAUC,IAQtDxC,EAAczK,UAAUkG,cAAgB,WACpC,MAAO,aAQXuE,EAAczK,UAAUkN,QAAU,WAC9B9H,EAAOpF,UAAUkN,QAAQhN,KAAKiD,OAElCsH,EAAczK,UAAUkM,iBAAmB,SAAU7K,EAAgBhD,EAAe+M,EAAML,GACtF,IAII5O,EAAW,WACf,GAAIkF,EAAehD,GAA8B,gBAE7C,IAAK,IADD8O,EAAY9L,EAAehD,GAA2B,aACjD7D,EAAI,EAAGA,EAAI2S,EAAUzS,OAAQF,IAClC,IAAK,IAAI0C,EAAI,EAAGA,EAAImE,EAAe3G,OAAQwC,IACvC,IAAKrC,oBAAkBsS,EAAU3S,GAAG2B,KAAckF,EAAenE,GAAGf,KAAcgR,EAAU3S,GAAG2B,GAAW,CACtG,IAAMtB,oBAAkBuQ,EAAKlO,MAASkO,EAAKlO,GAAGwO,UAAUC,SAAS,gBAAiB,CAC9E,IAAI9I,KAAW+I,MAAM1L,KAAKkL,EAAKlO,GAAG2O,iBAAiB,eAC/CC,EAAWzK,EAAenE,GAAGf,IACwB,IAArDgH,KAAKyH,yBAAyBjJ,QAAQmK,KACtC3I,KAAgB,YAAEN,GAAO,EAAO,KAAMkI,GACtC5H,KAAKwH,iBAAoB,KAAOxH,KAAgB,YAChDA,KAAgB,YAAI,GACpBA,KAAKyH,yBAAyBjP,KAAKmQ,GACnC3I,KAAK+I,iBAAiB7K,EAAgBnE,EAAGkO,EAAML,IAGvD,QAMbN,GACT2C,aC3KEC,GAA2B,WAM3B,SAASA,EAAUxT,GACfsJ,KAAKtJ,OAASA,EACdsJ,KAAKmK,iBACLnK,KAAKmI,mBACLnI,KAAKoK,gBACLpK,KAAKqK,mBAocT,OA5bAH,EAAUrN,UAAUkG,cAAgB,WAChC,MAAO,aAEXmH,EAAUrN,UAAUwN,iBAAmB,WACnCrK,KAAKtJ,OAAO4T,GAAG,eAAgBtK,KAAKuK,eAAgBvK,MACpDA,KAAKtJ,OAAO4T,GAAG,iBAAkBtK,KAAKwK,eAAgBxK,MACtDA,KAAKtJ,OAAO4T,GAAG,oBAAqBtK,KAAKyK,kBAAmBzK,MAC5DA,KAAKtJ,OAAOiB,KAAK2S,GAAG,mBAAoBtK,KAAKuK,eAAgBvK,MAC7DA,KAAKtJ,OAAO4T,GAAG,oBAAqBtK,KAAK0K,kBAAmB1K,OAEhEkK,EAAUrN,UAAU8N,oBAAsB,WAClC3K,KAAKtJ,OAAOkU,cAGhB5K,KAAKtJ,OAAOmU,IAAI,eAAgB7K,KAAKuK,gBACrCvK,KAAKtJ,OAAOmU,IAAI,iBAAkB7K,KAAKwK,gBACvCxK,KAAKtJ,OAAOiB,KAAKkT,IAAI,mBAAoB7K,KAAKuK,gBAC9CvK,KAAKtJ,OAAOmU,IAAI,oBAAqB7K,KAAK0K,mBAC1C1K,KAAKtJ,OAAOmU,IAAI,oBAAqB7K,KAAKyK,qBAQ9CP,EAAUrN,UAAUkN,QAAU,WAC1B/J,KAAK2K,uBAETT,EAAUrN,UAAU6N,kBAAoB,SAAUxH,GAC9C,IAEI4H,EAFAvJ,EAAShJ,YAAU,SAAU2K,GAC7B6H,EAAYC,eAAazJ,EAAQ,sBAErC,GAAIwJ,GAAaA,EAAUrC,iBAAiB,sBAAsBnR,OAAS,EAAG,CAC1EuT,EAAWC,EAAUE,cAAc,0BACnC,IAAIpB,KACJA,EAASrR,KAAK+I,EAAO2J,QAAQ,MAAMrB,UACnC7J,KAAKmL,iBAAiBtB,GACtB7J,KAAKoL,sBAAsBN,EAAUA,EAASO,mBAAmB9C,UAAUC,SAAS,WAAYjH,EAAO2J,QAAQ,YAE9G,GAAIH,GAAaA,EAAUrC,iBAAiB,oBAAoBnR,OAAS,GAAKyI,KAAKtJ,OAAO4U,mBAAoB,CAC/G,IAAIC,GAAiBR,EAAUE,cAAc,YAAY1C,UAAUC,SAAS,aACpEuC,EAAUE,cAAc,YAAY1C,UAAUC,SAAS,UAC/DxI,KAAKwL,gBAAgBD,GACrBT,EAAWC,EAAUE,cAAc,0BACnCjL,KAAKoL,sBAAsBN,EAAUS,EAAehK,EAAO2J,QAAQ,SAG3EhB,EAAUrN,UAAUuO,sBAAwB,SAAUN,EAAUW,EAAYC,GACxE,IAAIjN,EAAOuB,KAAKtJ,OAAOyF,wBAAwBuP,EAAW7B,UACtD3G,GAASyI,QAASF,EAAYlK,OAAQuJ,EAAUY,WAAYA,EAC5DE,QAASd,EAASvC,UAAUC,SAAS,mBAC/BxI,KAAKtJ,OAAOmV,oBAAsBpN,GAC5CuB,KAAKtJ,OAAO0S,QAAQ0C,EAAuB5I,IAE/CgH,EAAUrN,UAAUkP,uBAAyB,WAIzC,IAAK,IAHDC,EACAC,EACA3U,EAAW0I,KAAKtJ,OAAc,QACzBwV,EAAM,EAAGA,EAAM5U,EAAQC,OAAQ2U,IAChC5U,EAAQ4U,GAAK1U,eACbwU,EAAahM,KAAKtJ,OAAOY,QAAQ4U,GAAKvL,KAI9C,IAAK,IADDwL,EAAmBnM,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,oBAAoBnR,OAClFwC,EAAI,EAAGA,EAAIoS,EAAkBpS,IAAK,CACtBiG,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,oBAAoB3O,GACtEsS,aAAa,kBAAoBL,IAC5CC,EAAclS,GAGtB,OAAOkS,GAEX/B,EAAUrN,UAAU0N,eAAiB,WAEjC,GADAvK,KAAKiM,YAAcjM,KAAK+L,yBACpB/L,KAAKiM,aAAe,GAAoF,IAA/EjM,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,oBAAoBnR,OAAc,CAC3G,IAAI+U,EAAgBtM,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,oBAAoB1I,KAAKiM,aAEzFM,EAAYvM,KAAKtJ,OAAO8V,cAAc,SAAWC,UAAW,kBAAmBC,OAASvJ,KAAQ,eAChG4H,EAAY4B,iBAAe3M,KAAKtJ,OAAO8V,eAAe,GAASb,SAFvD,EAEuEiB,MAAO,OAChFrE,UAAUsE,IAAI,uBACxB9B,EAAU+B,aAAaP,EAAUQ,YAAahC,EAAUiC,YACnDtV,oBAAkB4U,IACnBA,EAAcQ,aAAa/B,EAAWuB,EAAcU,YAEpDhN,KAAKtJ,OAAO4U,oBACZtL,KAAKwL,uBAGR,GAAIxL,KAAKiM,aAAe,GAAKjM,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,oBAAoBnR,OAAS,EAAG,CAC9G,IAAIwT,EACAQ,GADAR,EAAY/K,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,uBAAuB,IACzDuC,cAAc,YAAY1C,UAAUC,SAAS,WACvExI,KAAKtJ,OAAO4U,oBAAsBC,GAClCvL,KAAKwL,gBAAgBD,KAIjCrB,EAAUrN,UAAUoQ,qBAAuB,SAAU/J,GACjD,IAAIqJ,EAAYvM,KAAKtJ,OAAO8V,cAAc,SAAWC,UAAW,oBAAqBC,OAASvJ,KAAQ,cAClG1E,EAAOyE,EAAKzE,KAChByE,EAAKzD,KAAK8I,UAAUsE,IAAI,sBACxB3J,EAAKzD,KAAKyN,aAAa,aAAc,YACrC,IAAIjT,GAASvC,oBAAkB+G,EAAK0O,gBAAyC,YAAvB1O,EAAK0O,cACvDpC,EAAY4B,iBAAe3M,KAAKtJ,OAAO8V,eAAe,GAASb,QAAS1R,EAAO2S,MAAO,MAK1F,GAJA7B,EAAUxC,UAAUsE,IAAI,uBACpB7M,KAAKtJ,OAAO0W,gBACZrC,EAAUE,cAAc,YAAYzQ,MAAM6S,MAAQ,QAE3B,kBAAvB5O,EAAK0O,cAAmC,CACxC,IAAIG,EAAWvC,EAAUrC,iBAAiB,YAAY,GACtD6E,eAAaD,IAAY,UAAW,SAAU,cAC9CvC,EAAUE,cAAc,YAAY1C,UAAUsE,IAAI,UAGtD,OADA9B,EAAU+B,aAAaP,EAAUQ,YAAahC,EAAUiC,YACjDjC,GAEXb,EAAUrN,UAAU2N,eAAiB,SAAUgD,GAC3C,IAAIzC,EAAY/K,KAAKiN,qBAAqBO,GACtCC,EAAeD,EAAU/N,KAAKwL,cAAc,2BAChD,GAAKvT,oBAAkB+V,GAKlB,CACD,IAAIC,EAAU1N,KAAKtJ,OAAO8V,cAAc,QAAUC,UAAW,mBACzDhO,EAAO+O,EAAU/N,KAAKkO,UAC1BH,EAAU/N,KAAKkO,UAAY,GAC3BD,EAAQC,UAAYlP,EACpB,IAAImP,EAAS5N,KAAKtJ,OAAO8V,cAAc,OAASC,UAAW,6BAC3DmB,EAAOC,YAAY9C,GACnB6C,EAAOC,YAAYH,GACnBF,EAAU/N,KAAKoO,YAAYD,QAZtBJ,EAAU/N,KAAKwL,cAAc,yBAC9BwC,EAAaX,aAAa/B,EAAW0C,EAAa/E,iBAAiB,eAAe,KAc9FwB,EAAUrN,UAAUsO,iBAAmB,SAAU2C,GAC7C,IAAK,IAAIzW,EAAI,EAAGA,EAAIyW,EAAWvW,OAAQF,IAAK,CACxC,IAAIqB,EAASsH,KAAKtJ,OAAOyF,wBAAwB2R,EAAWzW,IACxD0W,EAAahV,EAAciH,KAAKtJ,OAAQgC,EAAOM,UAE/CmU,EAA0C,aAD9CzU,EAASqV,GACmBZ,cAA+B,QAAU,UACrEzU,EAAOyU,cAAgBA,EAEvB,IAAK,IADD7U,EAAOD,OAAOC,KAAKI,GACdqB,EAAI,EAAGA,EAAIzB,EAAKf,OAAQwC,IACzB1B,OAAOwE,UAAUC,eAAeC,KAAKgR,EAAYzV,EAAKyB,MACtDgU,EAAWzV,EAAKyB,IAAMrB,EAAOJ,EAAKyB,KAG1CiG,KAAKgO,gBAAgBtV,EAAQyU,GAAe,GACxCnN,KAAKtJ,OAAO4U,oBACZtL,KAAKwL,oBAIjBtB,EAAUrN,UAAUmR,gBAAkB,SAAUtV,EAAQyU,EAAec,GACnE,IAAI1W,EAAS,EAKb,GAJAyI,KAAKkO,oBAAoBxV,EAAQyU,IAC5Bc,GAAevV,EAAOI,YAAckH,KAAKtJ,OAAO4U,oBACjDtL,KAAKmO,sBAAsBzV,EAAOI,YAElCJ,EAAOY,cAAgB0G,KAAKtJ,OAAO4U,mBAAoB,CACvD,IAAIhS,EAAeZ,EAAOY,cACrB5B,oBAAkBsI,KAAKtJ,OAAO0X,eAC/BpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,OAAS,GAAKyI,KAAKtJ,OAAO4U,qBAClEhS,EAAe0G,KAAKsO,wBAAwBhV,IAEhD/B,EAAS+B,EAAa/B,OACtB,IAAK,IAAIgX,EAAQ,EAAGA,EAAQhX,EAAQgX,IAC3BjV,EAAaiV,GAAOC,eACjBlV,EAAaiV,GAAOlV,gBACpB2G,KAAKgO,gBAAgB1U,EAAaiV,GAAQpB,GAAe,GAGzDnN,KAAKkO,oBAAoB5U,EAAaiV,GAAQpB,MAMlEjD,EAAUrN,UAAUyR,wBAA0B,SAAUhV,GACpD,IAAIiO,EAAQvH,KAIZ,OAH2B1G,EAAamE,OAAO,SAAUC,GACrD,OAAO6J,EAAM7Q,OAAO0X,aAAaC,eAAe7P,QAAQd,IAAM,KAItEwM,EAAUrN,UAAUsR,sBAAwB,SAAUtV,GAClD,IAAItB,EAAS,EACT+B,KACAZ,EAASK,EAAciH,KAAKtJ,OAAQmC,EAAaG,UACjDN,GAAUA,EAAOY,eACjBA,EAAeZ,EAAOY,eAErB5B,oBAAkBsI,KAAKtJ,OAAO0X,eAC/BpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,OAAS,GAAKyI,KAAKtJ,OAAO4U,qBAClEhS,EAAe0G,KAAKsO,wBAAwBhV,IAEhD/B,EAAS+B,GAAgBA,EAAa/B,OACtC,IAAIkX,EAAU,EACVC,EAAoB,EACxB,IAAKhX,oBAAkBgB,GAAS,CAC5B,IAAK,IAAIrB,EAAI,EAAGA,EAAIiC,EAAa/B,OAAQF,IAAK,CAC1C,IACIsX,EADgB5V,EAAciH,KAAKtJ,OAAQ4C,EAAajC,GAAG2B,UAE1DtB,oBAAkBiX,KACkB,kBAAjCA,EAAexB,cACfsB,IAEsC,UAAjCE,EAAexB,eACpBuB,KAKRhW,EAAOyU,cADPsB,EAAU,GAAMC,EAAoB,GAAKA,IAAsBnX,EACxC,gBAEI,IAAtBmX,GAAuC,IAAZD,EACT,UAGA,QAE3BzO,KAAKkO,oBAAoBxV,EAAQA,EAAOyU,eACpCzU,EAAOI,YACPkH,KAAKmO,sBAAsBzV,EAAOI,cAI9CoR,EAAUrN,UAAU2O,gBAAkB,SAAUoD,GAC5C,IAAIrH,EAAQvH,KAERzI,EAAS,EACb,IAAKG,oBAAkBsI,KAAKtJ,OAAO0X,eAAiBpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,OAAS,EAAG,CACpG,IAAIsX,EAAe7O,KAAKtJ,OAAO0X,aAAaC,eACX,IAA7BrO,KAAKoK,aAAa7S,OAClByI,KAAKoK,aAAeyE,EAGhB7O,KAAKoK,eAAiByE,IACtB7O,KAAKoK,aAAeyE,GAI5B7O,KAAKoK,aAAa7S,OAAS,IACtByI,KAAKtJ,OAAOsB,eAAeV,QAAQC,QAAUyI,KAAKoK,aAAa7S,SAChEyI,KAAKoK,iBAGb,IAAI3L,GAAS/G,oBAAkBsI,KAAKtJ,OAAO0X,eACtCpO,KAAKoK,aAAa7S,OAAS,EAAMyI,KAAKoK,aACvCpK,KAAKtJ,OAAO8G,SAEhB,GADAiB,EAAOhI,EAAauJ,KAAKtJ,QAAUsJ,KAAKtJ,OAAOyF,wBAA0BsC,GACpE/G,oBAAkBkX,GACnB,IAAK,IAAIvX,EAAI,EAAGA,EAAIoH,EAAKlH,OAAQF,IAC7B,GAAIuX,EAAU,CACV,GAA8B,UAA1BnQ,EAAKpH,GAAG8V,cACR,SAEJ1O,EAAKpH,GAAG8V,cAAgB,QACxBnN,KAAKkO,oBAAoBzP,EAAKpH,GAAIoH,EAAKpH,GAAG8V,oBAGlCnN,KAAKmK,cAAc3L,QAAQC,EAAKpH,KAC3B,IACToH,EAAKpH,GAAG8V,cAAgB,UACxBnN,KAAKkO,oBAAoBzP,EAAKpH,GAAIoH,EAAKpH,GAAG8V,eACtCnN,KAAKtJ,OAAO4U,oBACZtL,KAAKmO,sBAAsB1P,EAAKpH,MAMnC,IAAbuX,GAAsB5O,KAAKtJ,OAAO0H,uBAClC4B,KAAKmK,iBACLnK,KAAKmI,mBACL1J,EAAKhB,OAAO,SAAUqR,GAClBA,EAAI3B,cAAgB,UACpB5F,EAAM2G,oBAAoBY,EAAKA,EAAI3B,kBAG3C5V,EAASyI,KAAKmK,cAAc5S,OAC5B,IAAI+V,EAAWtN,KAAKtJ,OAAO0V,mBAAmB1D,iBAAiB,YAAY,GACvEnR,EAAS,GAAKkH,EAAKlH,OAAS,EACxBA,IAAWkH,EAAKlH,QAAWqX,GAK3BrB,eAAaD,IAAY,WACzBA,EAAS/E,UAAUsE,IAAI,aALvBU,eAAaD,IAAY,YACzBA,EAAS/E,UAAUsE,IAAI,WAQ3BU,eAAaD,IAAY,UAAW,YAG5CpD,EAAUrN,UAAUqR,oBAAsB,SAAUa,EAAetD,GAC/D,IAGIuD,EAGA1B,EANA5U,EAASsH,KAAKtJ,OAAOyF,wBAAwBsB,OAAO,SAAUC,GAC9D,OAAOA,EAAE1E,WAAa+V,EAAc/V,WAGpCiW,EAAcjP,KAAKtJ,OAAOyF,wBAAwBqC,QAAQ9F,EAAO,IACjEwW,EAAiBnW,EAAciH,KAAKtJ,OAAQqY,EAAc/V,UAE9D,GAAIiW,GAAe,EAAG,CAClB,IAAIE,EAAKnP,KAAKtJ,OAAOmI,UAAUoQ,GAC3BG,OAAY,GACZpP,KAAKtJ,OAAOsI,YAAcgB,KAAKtJ,OAAOuI,sBACtCmQ,EAAYpP,KAAKtJ,OAAO2Y,qBAAqBJ,IAEjD3B,EAAW6B,EAAGzG,iBAAiB,YAAY,GAAKyG,EAAGzG,iBAAiB,YAAY,GAC1E0G,EAAU1G,iBAAiB,YAAY,GACxChR,oBAAkB4V,IACnBC,eAAaD,IAAY,UAAW,SAAU,cAQtD,GALA0B,EAAgBE,EACZxX,oBAAkBsX,KAClBA,EAAgBD,GAEpBC,EAAc7B,cAAgB1B,EACX,UAAfA,GAA0B/T,oBAAkBqX,EAAcP,eACrC,IAAjBS,IAAqE,IAA/CjP,KAAKmI,gBAAgB3J,QAAQyQ,IACnDjP,KAAKmI,gBAAgB3P,KAAKyW,IAEqB,IAA/CjP,KAAKmK,cAAc3L,QAAQwQ,KAA2C,IAAjBC,IACnDvX,oBAAkBsI,KAAKtJ,OAAO0X,eAAiBpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,OAAS,GAClGyI,KAAKmK,cAAc3R,KAAKwW,IAEuB,IAA/ChP,KAAKmK,cAAc3L,QAAQwQ,IAAyBhP,KAAKtJ,OAAO0H,uBAA2B1G,oBAAkBsI,KAAKtJ,OAAO0X,eAAiBpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,OAAS,GAC3LyI,KAAKmK,cAAc3R,KAAKwW,IAEuB,IAA/ChP,KAAKmK,cAAc3L,QAAQwQ,IAA2BtX,oBAAkBsI,KAAKtJ,OAAO0X,eACjC,IAAnDpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,QACxCyI,KAAKmK,cAAc3R,KAAKwW,IAEuB,IAA/ChP,KAAKmK,cAAc3L,QAAQwQ,IAAyBtX,oBAAkBsI,KAAKtJ,OAAO0X,eAClFpO,KAAKmK,cAAc3R,KAAKwW,QAG3B,IAAoB,YAAfvD,GAA2C,kBAAfA,IAAmC/T,oBAAkBqX,EAAcP,cAAe,CACpH,IAAItU,EAAQ8F,KAAKmK,cAAc3L,QAAQwQ,GAIvC,IAHe,IAAX9U,GACA8F,KAAKmK,cAAchN,OAAOjD,EAAO,IAEc,IAA/C8F,KAAKmI,gBAAgB3J,QAAQyQ,GAAqB,CAClD,IAAIK,EAAetP,KAAKmI,gBAAgB3J,QAAQyQ,GAChDjP,KAAKmI,gBAAgBhL,OAAOmS,EAAc,IAGlD,IAAIC,EAA+B,kBAAf9D,EAAiC,SAAW,KAAOA,EACnEwD,GAAe,IACVvX,oBAAkB4V,IACnBA,EAAS/E,UAAUsE,IAAI0C,KAInCrF,EAAUrN,UAAU4N,kBAAoB,SAAUvH,GAC9C,IAEI8G,EACAwF,EAHAjI,EAAQvH,KACRH,EAAcqD,EAAKrD,YAGvB,GAAIzI,EAAiB4I,KAAKtJ,SAClBsJ,KAAKtJ,OAAO4U,mBACZ,GAAqB,YAAhBzL,GAA6C,WAAhBA,EAA2B,CACzD,IAAIoI,EAAOjI,KAAKtJ,OAAOiB,KAAKkH,UAE5B2Q,GADAxF,EAAYhK,KAAKtJ,OAAOyF,yBACA5E,OACxByI,KAAKmI,mBACL,IAAK,IAAI9Q,EAAI,EAAGA,EAAImY,EAAanY,IACxB4Q,EAAK5Q,GAAGkR,UAAUC,SAAS,iBAC5BxI,KAAKkO,oBAAoBlE,EAAU3S,GAAI2S,EAAU3S,GAAG8V,oBAI3D,GAAoB,WAAhBtN,GAA4C,QAAhBqD,EAAK5H,OAAkB,CACxD,IAAImU,KACgB,WAAhB5P,EACA4P,EAAcvM,EAAKzE,KAGnBgR,EAAYjX,KAAK0K,EAAKzE,MAE1B,IAASpH,EAAI,EAAGA,EAAIoY,EAAYlY,OAAQF,IAAK,CACzC,GAAoB,WAAhBwI,EAA0B,CAC1B,IAAI3F,EAAQ8F,KAAKtJ,OAAO8G,SAASgB,QAAQiR,EAAYpY,IACjDiY,EAAetP,KAAKmI,gBAAgB3J,QAAQtE,GAChD8F,KAAKmI,gBAAgBhL,OAAOmS,EAAc,GAC1CtP,KAAKkO,oBAAoBuB,EAAYpY,GAAI,WAExCK,oBAAkB+X,EAAYpY,GAAGyB,aAClCkH,KAAKmO,sBAAsBsB,EAAYpY,GAAGyB,iBAIxB,QAArBoK,EAAKrD,aAAyBG,KAAKtJ,OAAO4U,mBAC/CpI,EAAKzE,KAAK0O,cAAgB,WAEL,cAAhBtN,GAA+C,cAAhBA,GAA+C,YAAhBA,IAC/DpJ,EAAauJ,KAAKtJ,WACtBsJ,KAAKmK,iBACLnK,KAAKmI,oBACL6B,GAActS,oBAAkBsI,KAAKtJ,OAAO0X,eAAiBpO,KAAKtJ,OAAO0X,aAAaC,eAAe9W,OAAS,EAC1GyI,KAAKtJ,OAAOyF,wBAA0B6D,KAAKtJ,OAAO8G,UAC5CkS,QAAQ,SAAUhX,GACxB,GAAI6O,EAAM7Q,OAAO0H,qBAAsB,CAC/B1F,EAAOW,gBACPkO,EAAM4G,sBAAsBzV,GAG5B6O,EAAM2G,oBAAoBxV,EAAQA,EAAOyU,eAE7C,IAAInP,EAAQ5E,EAAoBV,GAChCsF,EAAQuJ,EAAM+G,wBAAwBtQ,GACtC,IAAK,IAAI3G,EAAI,EAAGA,EAAI2G,EAAMzG,OAAQF,IAC1B2G,EAAM3G,GAAGgC,gBACTkO,EAAM4G,sBAAsBnQ,EAAM3G,IAE3B2G,EAAM3G,GAAkB,iBAAMK,oBAAkBsG,EAAM3G,KAC7DkQ,EAAM2G,oBAAoBlQ,EAAM3G,GAAI2G,EAAM3G,GAAG8V,oBAKjDzU,EAAOW,gBACPkO,EAAM4G,sBAAsBzV,GAG5B6O,EAAM2G,oBAAoBxV,EAAQA,EAAOyU,iBAIrDnN,KAAKwL,oBAKrBtB,EAAUrN,UAAU8S,kBAAoB,WACpC,OAAO3P,KAAKmK,eAEhBD,EAAUrN,UAAU+S,qBAAuB,WACvC,OAAO5P,KAAKmI,iBAET+B,KCjdP2F,GAAuB,WAMvB,SAASA,EAAMnZ,GACXsJ,KAAKtJ,OAASA,EACdkM,OAAKC,OAAOiN,SACZ9P,KAAKqK,mBAyCT,OAjCAwF,EAAMhT,UAAUkG,cAAgB,WAC5B,MAAO,SAMX8M,EAAMhT,UAAUwN,iBAAmB,WAC/BrK,KAAKtJ,OAAOiB,KAAK2S,GAAGyF,EAAsB/P,KAAKgQ,cAAehQ,OAElE6P,EAAMhT,UAAU8N,oBAAsB,WAClC3K,KAAKtJ,OAAOiB,KAAKkT,IAAIkF,EAAsB/P,KAAKgQ,gBAEpDH,EAAMhT,UAAUmT,cAAgB,SAAUC,GACtC,IAAItY,EAAOY,YAAU,YAAa0X,GAC9BC,EAAc3X,YAAU,UAAW0X,GACvCtY,EAAK0S,iBAAiB8F,EAAsBnQ,KAAKtJ,OAAOiB,KAAK+M,eAC7D/M,EAAK0S,iBAAiB+F,EAAqBpQ,KAAKtJ,OAAOiB,KAAK8M,cAC5D9M,EAAK0S,iBAAiBgG,EAAwBrQ,KAAKtJ,OAAOiB,KAAKgN,iBAC/D2L,YAAUJ,GAAc,eAE5BL,EAAMhT,UAAU0T,MAAQ,WACpBvQ,KAAKtJ,OAAOiB,KAAK4Y,SAQrBV,EAAMhT,UAAUkN,QAAU,WACtB/J,KAAK2K,uBAEFkF,KC1DPjP,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5D6O,GAAgC,SAAUvO,GAE1C,SAASuO,IACL,OAAkB,OAAXvO,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAiB/D,OAnBAY,GAAU4P,EAAgBvO,GAI1BZ,IACIc,cACDqO,EAAe3T,UAAW,cAAU,GACvCwE,IACIc,YAAS,IACVqO,EAAe3T,UAAW,kBAAc,GAC3CwE,IACIc,WAAS,aACVqO,EAAe3T,UAAW,gBAAY,GACzCwE,IACIc,cACDqO,EAAe3T,UAAW,WAAO,GACpCwE,IACIc,cACDqO,EAAe3T,UAAW,qBAAiB,GACvC2T,GACTpO,iBC5CExB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5D8O,GAAmC,SAAUxO,GAE7C,SAASwO,IACL,OAAkB,OAAXxO,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAuB/D,OAzBAY,GAAU6P,EAAmBxO,GAI7BZ,IACIc,WAAS,QACVsO,EAAkB5T,UAAW,YAAQ,GACxCwE,IACIc,WAAS,SACVsO,EAAkB5T,UAAW,yBAAqB,GACrDwE,IACIc,WAAS,WACVsO,EAAkB5T,UAAW,YAAQ,GACxCwE,IACIc,YAAS,IACVsO,EAAkB5T,UAAW,wBAAoB,GACpDwE,IACIc,WAAS,YACVsO,EAAkB5T,UAAW,oBAAgB,GAChDwE,IACIc,YAAS,IACVsO,EAAkB5T,UAAW,oBAAgB,GAChDwE,IACIc,YAAS,IACVsO,EAAkB5T,UAAW,oBAAgB,GACzC4T,GACTrO,iBCxCEsO,GAAwB,WAMxB,SAASA,EAAOha,GACZsJ,KAAKtJ,OAASA,EACdsJ,KAAK2Q,eAAiB,KACtB3Q,KAAKtJ,OAAOiB,KAAK2S,GAAG,kBAAmBtK,KAAK4Q,qBAAsB5Q,MAClEA,KAAKtJ,OAAOiB,KAAK2S,GAAG,sBAAuBtK,KAAK6Q,oBAAqB7Q,MA+QzE,OAvQA0Q,EAAO7T,UAAUiU,YAAc,SAAU5N,GACrC,GAAKA,EAAKzE,KAAV,CAGA,IAAIA,EAAOyE,EAAKzE,KACZlB,EAAakB,EAAK3F,WACtB,IAAKpB,oBAAkB+G,EAAK3F,cAAgBrB,EAAuBuI,KAAKtJ,WACjEsJ,KAAKtJ,OAAOqa,aAA2D,SAA1C/Q,KAAKtJ,OAAOsa,aAAaC,cACpDxa,EAAauJ,KAAKtJ,UAAY8C,EAAUwG,KAAKtJ,SAAW,EAC5CsJ,KAAKtJ,OAAOuC,kBAAoBvB,oBAAkB6F,EAAWyC,KAAKtJ,OAAOwC,sBACtFqE,EAAWyC,KAAKtJ,OAAOwC,sBAAwB8G,KAAKtJ,OAAOwa,qBAC1DzY,EAAgBuH,KAAKtJ,OAAQwM,EAAKzE,KAAMuB,KAAKtJ,OAAOiB,KAAKwE,4BAE1D+G,EAAKvE,IAAInE,MAAMG,QAAU,QAGjC,GAAIlE,EAAauJ,KAAKtJ,UAAY8C,EAAUwG,KAAKtJ,QAAS,CACtD,IAAIya,EAAUnR,KAAKtJ,OACf0a,EAAYpR,KAAKtJ,OAAOyF,wBAAwBsB,OAAO,SAAUqR,GACjE,OAAOzQ,WAAS8S,EAAQjU,UAAW4R,KAASzQ,WAAS8S,EAAQlU,gBAAiBwB,KAElF,GAAI2S,EAAU7Z,OAAS,EAAG,CACtB,IAAIoD,EAAUyW,EAAU,GAAGjY,SAAW,YAAc,OACpD+J,EAAKvE,IAAIuO,aAAa,QAAS,YAAcvS,EAAU,MAI9CpC,YAAU,eAAgB2K,EAAKzE,OAE5C6R,YAAUpN,EAAKvE,KAAM,gBAErBuE,EAAKvE,IAAIsM,cAAc,qBACvB/H,EAAKvE,IAAIuO,aAAa,gBAAiB,QAElChK,EAAKvE,IAAIsM,cAAc,wBAC5B/H,EAAKvE,IAAIuO,aAAa,gBAAiB,SAEvClN,KAAKtJ,OAAOwa,mBAAqBlR,KAAKtJ,OAAOuC,gBACxCvB,oBAAkB+G,EAAK3F,cACxBoK,EAAKvE,IAAInE,MAAMG,QAAU,SAGjCqF,KAAKtJ,OAAO0S,QAAQgH,EAAqBlN,KAQ7CwN,EAAO7T,UAAU2C,WAAa,SAAU0D,GACpC,GAAKA,EAAKzE,KAAV,CAGA,IAEIvE,EAIAmX,EANA1Z,EAAOqI,KAAKtJ,OAAOiB,KACnB8G,EAAOyE,EAAKzE,KAGZ6S,EADc5Z,oBAAkB+G,EAAK8S,aACjB9S,EAAKtE,MAAQsE,EAAK8S,YACtCC,EAAkB,EAElB7R,EAASK,KAAKtJ,OAAO+a,eAAevO,EAAKvD,OAAOgB,KAChD+Q,EAAajT,EAAK+P,aAClBmD,EAAgB3R,KAAKtJ,OAAOuI,mBAK5B/E,EAJCxC,oBAAkB+G,EAAK3F,YAIhB2F,EAAKvE,MAHLuE,EAAK3F,WAAWoB,MAa5B,IANI8F,KAAKtJ,OAAOkb,6BAA+B5R,KAAKtJ,OAAOuC,cACzC+G,KAAKtJ,OAA8B,wBAAEwM,EAAKvD,OAAOgB,KAGjDhJ,EAAKka,oBAAoB3O,EAAKvD,OAAOgB,QAEnCX,KAAKtJ,OAAO0I,iBAAyC,QAArB8D,EAAKrD,aACjD,mBAD0EqD,EAAKrD,aACtC,WAArBqD,EAAKrD,cAA4BnI,oBAAkBwL,EAAKzD,KAAKwL,cAAc,gBAqD9FjL,KAAK2Q,iBACV3Q,KAAK2Q,eAAiB,UAtD+F,CAMrH,IAAK,IALDnD,EAAYhB,gBAAc,OAASC,UAAW,2BAC9CqF,EAAkBtF,gBAAc,QAChCC,UAAW,iBACXsF,OAAQ,uCAEHC,EAAI,EAAGA,EAAIV,EAAKU,IACrBR,GAAmB,GACnBhE,EAAUK,YAAYiE,EAAgB/E,aAE1C,IAAIkF,EAAgBva,oBAAkB+G,EAAKyT,yBACNzT,EAAKpF,gBAApCoF,EAAKyT,wBAIX,GAHID,IAAiBva,oBAAkB+G,EAAKnF,gBACxC2Y,IAA8C,IAA7BxT,EAAKnF,aAAa/B,SAEnC0a,EAAc,CACd3B,YAAUpN,EAAKzD,MAAO,iBACtB,IAAI0S,EAAa3F,gBAAc,QAAUC,UAAW,YAChD2F,OAAS,EAETA,EADApS,KAAKtJ,OAAOuC,cACHwF,EAAKtF,WACTzB,oBAAkB+G,EAAKuB,KAAKtJ,OAAOwC,sBAAwBuF,EAAKuB,KAAKtJ,OAAOwC,uBAC5E8G,KAAKtJ,OAAOwa,qBAGLzS,EAAKtF,WAAaV,EAAgBuH,KAAKtJ,OAAQ+H,EAAMuB,KAAKtJ,OAAOiB,KAAKwE,0BAEtFmU,YAAU6B,GAAa,EAAW,mBAAqB,sBACvDX,GAAmB,GACnBhE,EAAUK,YAAYsE,GACtBL,EAAgBtX,MAAM6S,MAAQ,MAC9BmE,GAAmB,EACnBhE,EAAUK,YAAYiE,EAAgB/E,kBAEjCuE,IAAQA,IAAQ7S,EAAKtE,SAE1BqX,GAAmB,GACnBhE,EAAUK,YAAYiE,EAAgB/E,aACtCS,EAAUK,YAAYiE,EAAgB/E,cAM1CsE,EAAc7E,gBAAc,QAAUC,UAAW,eAC7CzM,KAAKtJ,OAAO0W,gBACZiE,EAAY7W,MAAM6S,MAAQ,eAAiBmE,EAAkB,OAEjElB,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,OAChE6F,KAAKqS,eAAenP,EAAMmO,GAC1B7D,EAAUK,YAAYwD,GACtBnO,EAAKzD,KAAKoO,YAAYL,GAM1B,GADc7V,EAAK2a,4BAA8B,GAAK3a,EAAK4a,6BAA+B,EAgBrF,CACD,IAAIC,EAAqB7a,EAAK8a,wBAC1BC,EAAoB/a,EAAKgb,uBACzBC,EAAiBjb,EAAKkb,oBACrBL,EAAmBjb,OAAS,GAAMib,EAAmB,GAAGM,QAAU5P,EAAKvD,OAAOmT,MAC/ExC,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,OAE1DuY,EAAkBnb,OAAS,GAAMmb,EAAkB,GAAGI,QAAU5P,EAAKvD,OAAOmT,MAClFxC,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,OAE1DyY,EAAerb,OAAS,GAAMqb,EAAe,GAAGE,QAAU5P,EAAKvD,OAAOmT,OAC5ExC,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,YAzBhEwX,EAAgB3R,KAAKtJ,OAAO0I,iBAAmBuS,EAAgB,GAC/Dha,EAAKka,oBAAoB3O,EAAKvD,OAAOgB,OAASgR,EAC9CrB,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,OAE3DwX,EAAgB3R,KAAKtJ,OAAO0I,iBAAmBuS,EAAgB,IACnEha,EAAKka,oBAAoB3O,EAAKvD,OAAOgB,OAASgR,GACxCha,EAAKka,oBAAoB3O,EAAKvD,OAAOgB,OAASgR,EAAgB,GACrErB,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,OAE3DwX,IAAkB3R,KAAKtJ,OAAO0I,iBAAmBuS,EAAgB,GACtEha,EAAKka,oBAAoB3O,EAAKvD,OAAOgB,OAASX,KAAKtJ,OAAO0I,gBAAkB,GAC5EkR,YAAUpN,EAAKzD,MAAO,iBAAmBvF,EAAQ,QAAUuE,EAAKtE,OAiBxE,IAAKzC,oBAAkBiI,IAAWA,EAAOnI,eACrCwI,KAAKtJ,OAAOqc,OAAO,iBAAkB7P,GACjClD,KAAKtJ,OAAO0W,eAAe,CAC3B,IAAI4F,EAAkB9P,EAAKzD,KAAKiJ,iBAAiB,YAAY,GAE7D8I,GADYyB,SAASD,EAAgBxY,MAAM6S,MAAO,IAElDmE,GAAmB,IAEfH,EADA1Z,EAAKka,oBAAoB3O,EAAKvD,OAAOgB,OAASX,KAAKtJ,OAAO0I,gBAC5C8D,EAAKzD,KAAKwL,cAAc,eAGxB/H,EAAKzD,KAAKwL,cAAc,oBAE9BzQ,MAAM6S,MAAQ,eAAiBmE,EAAkB,MAGrE,GAAIE,EAAY,CACZpB,YAAUpN,EAAKzD,MAAO,iBACtB,IAAIyT,EAAc3a,YAAU2K,EAAKvD,OAAOmT,MAAO5P,EAAKzE,MACN,MAA1CyE,EAAKzD,KAAKwL,cAAc,eACxB/H,EAAKzD,KAAKwL,cAAc,eAAe0C,UAAYuF,EAGnDhQ,EAAKzD,KAAKkO,UAAYuF,EAG1Bxb,oBAAkBsI,KAAKtJ,OAAOyc,cAC9BnT,KAAKtJ,OAAO0S,QAAQ+G,EAAsBjN,KAGlDwN,EAAO7T,UAAUwV,eAAiB,SAAUnP,EAAMmO,GAC9C,IACI+B,EADc/U,WAAS,cAAe2B,KAAKtJ,QAClBsJ,KAAKtJ,OAAO0I,iBACrCiU,EAAa,aACbC,EAAWpQ,EAAKvD,OAAOzF,MACvBxC,oBAAkB0b,EAAWN,QAC7B5P,EAAKzD,KAAKyN,aAAa,gBAAiBoG,EAAW,IAEnDF,EAAWN,QAAU5P,EAAKvD,OAAOmT,OAAUpb,oBAAkB0b,EAAWG,YACxErQ,EAAKvD,OAAO4T,SAAWH,EAAWG,SAClCrQ,EAAKvD,OAAO0T,GAAcG,mBAAiBtQ,EAAKvD,OAAO4T,UACvDrQ,EAAKzD,KAAK8I,UAAUsE,IAAI,mBAE5B,IAAI4G,EAAwD,MAA1CvQ,EAAKzD,KAAKwL,cAAc,eACtC/H,EAAKzD,KAAKwL,cAAc,eAAe0C,UAAYzK,EAAKzD,KAAKkO,UACjE,GAAsC,iBAA1BzK,EAAKvD,OAAe,UAAkBK,KAAK2Q,eACnD+C,iBAAerC,EAAarR,KAAK2Q,gBACjC3Q,KAAK2Q,eAAiB,KACtBzN,EAAKzD,KAAKkO,UAAY,QAErB,GAAIzK,EAAKzD,KAAK8I,UAAUC,SAAS,kBAAmB,CACrD,IAAIpQ,EAAM8K,EAAKzD,KAAKkU,SAASpc,OACzBqc,EAAS5T,KAAKtJ,OAAOmd,QAAQC,GAAK5Q,EAAKvD,OAAOgB,IAClD,GAAIyS,EAAWN,QAAU5P,EAAKvD,OAAOmT,OAAUpb,oBAAkB0b,EAAWG,UAqBxE,KAAa,EAAOnb,EAAKA,EAAM8K,EAAKzD,KAAKkU,SAASpc,OAC9C8Z,EAAYxD,YAAY3K,EAAKzD,KAAKkU,SADzB,QArBsE,CACnF,IAAII,EAAU,UAEd,GAAI/T,KAAKtJ,OAAOsd,SAA6C,iBAA1B9Q,EAAKvD,OAAe,SACnDuD,EAAKvD,OAAO0T,GAAYnQ,EAAKzE,KAAMuB,KAAKtJ,OAAQ,WAAYkd,EAAQ,KAAM,KAAMvC,GAC5E3Z,oBAAkBsI,KAAKtJ,OAAOiB,KAAKoc,MACnC/T,KAAKtJ,OAAOiB,KAAKoc,GAAW/T,KAAKtJ,OAAOqd,IAE5C/T,KAAKtJ,OAAOqc,OAAO,sBAAuB/S,KAAKtJ,OAAOqd,IACtD/T,KAAKtJ,OAA2B,2BAE/B,CACD,IACIud,EAAS/Q,EAAKvD,OAAO0T,GAAYjX,UAASlC,MAAS,IAAMgJ,EAAKzE,MAAOuB,KAAKtJ,OAAQ,WAAYkd,EAAQ5T,KAAKtJ,OAAU,kBACzHgd,iBAAerC,EAAa4C,UAEzB/Q,EAAKvD,OAAO4T,gBACZrQ,EAAKvD,OAAO0T,GACnBnQ,EAAKzD,KAAKkO,UAAY,SAS1B0D,EAAY1D,UAAY8F,EACxBvQ,EAAKzD,KAAKkO,UAAY,IAG9B+C,EAAO7T,UAAU+T,qBAAuB,SAAU1N,GAC9ClD,KAAK2Q,eAAiBzN,EAAKqQ,UAE/B7C,EAAO7T,UAAUgU,oBAAsB,SAAU3N,GAG7ClD,KAAKtJ,OAAc,QAAIwM,EACvBlD,KAAKtJ,OAAOqc,OAAO,sBAAuB/S,KAAKtJ,OAAc,SAC7DsJ,KAAKtJ,OAA2B,wBAEpCga,EAAO7T,UAAUkN,QAAU,WACvB/J,KAAKtJ,OAAOiB,KAAKkT,IAAI,kBAAmB7K,KAAK4Q,sBAC7C5Q,KAAKtJ,OAAOiB,KAAKkT,IAAI,sBAAuB7K,KAAK6Q,sBAE9CH,KCxRPwD,GAAkC,WAClC,SAASA,EAAiBvc,GACtBqI,KAAKmU,aAAe,eACpBnU,KAAKtJ,OAASiB,EACdqI,KAAKoU,eACLpU,KAAKqU,WACLrU,KAAKsU,iBACLtU,KAAKuU,aAAe,EACpBvU,KAAKwU,cACLxU,KAAKyU,cAAe,EACpBzU,KAAKqK,mBACLrK,KAAK0U,eACL1U,KAAKhF,iBAAmBtD,oBAAkBsI,KAAKtJ,OAAOuG,iBA4jB1D,OAtjBAiX,EAAiBrX,UAAUwN,iBAAmB,WAC1CrK,KAAKtJ,OAAO4T,GAAG,oBAAqBtK,KAAK2U,uBAAwB3U,MACjEA,KAAKtJ,OAAOiB,KAAK2S,GAAG,gBAAiBtK,KAAK4U,aAAc5U,MACxDA,KAAKtJ,OAAO4T,GAAG,eAAgBtK,KAAK6U,WAAY7U,MAChDA,KAAKtJ,OAAO4T,GAAGwK,EAAqB9U,KAAK+U,qBAAsB/U,MAC/DA,KAAKtJ,OAAO4T,GAAG,gBAAiBtK,KAAKgV,cAAehV,OAMxDkU,EAAiBrX,UAAU8N,oBAAsB,WACzC3K,KAAKtJ,OAAOkU,cAGhB5K,KAAKtJ,OAAOmU,IAAIiK,EAAqB9U,KAAK+U,sBAC1C/U,KAAKtJ,OAAOmU,IAAI,oBAAqB7K,KAAK2U,wBAC1C3U,KAAKtJ,OAAOmU,IAAI,eAAgB7K,KAAK6U,YACrC7U,KAAKtJ,OAAOmU,IAAI,gBAAiB7K,KAAKgV,eACtChV,KAAKtJ,OAAOiB,KAAKkT,IAAI,gBAAiB7K,KAAK4U,gBAQ/CV,EAAiBrX,UAAUkN,QAAU,WACjC/J,KAAK2K,uBAMTuJ,EAAiBrX,UAAUoY,SAAW,WAClC,OAAMjV,KAAKtJ,OAAOC,sBAAsBC,eAc5Csd,EAAiBrX,UAAUqY,kBAAoB,SAAUzW,GACrD,IAAI8I,EAAQvH,KAIZ,GAHAA,KAAKtJ,OAAO8G,SAAyC,IAA7BnF,OAAOC,KAAKmG,GAAMlH,QAAkByI,KAAKtJ,OAAOC,sBAAsBC,iBAC1FoJ,KAAKtJ,OAAOC,WAChBqJ,KAAKtJ,OAAO6G,cACP9G,EAAauJ,KAAKtJ,UAAY8C,EAAUwG,KAAKtJ,SAAY+H,aAAgB7H,iBAAiB6H,aAAgB/B,OAAQ,CACnH,IAAIjD,EAAKuG,KAAKtJ,OAAOC,WACrB,GAAIqJ,KAAKtJ,OAAOuG,gBAAiB,CAG7B,GAFA+C,KAAKtJ,OAAOye,MAAQzd,oBAAkBsI,KAAKtJ,OAAOye,OAC9C,IAAIC,QAAUpV,KAAKtJ,OAAOye,MAC1BnV,KAAKtJ,OAAOuG,gBAAiB,CAC7B,IAAIoY,EAAYrV,KAAKtJ,OAAOye,MAAMG,OAAO7X,OAAO,SAAU8X,GAAS,MAAqB,cAAdA,EAAM1d,MAC5EmI,KAAKtJ,OAAOuC,gBAAkBoc,EAAU9d,SACxCyI,KAAKtJ,OAAOye,MAAMK,MAAMxV,KAAKtJ,OAAOuG,gBAAiB,QAAS,MAC9D+C,KAAKtJ,OAAOye,MAAMM,UAAU,YAAazV,KAAKtJ,OAAOwG,YAG7D,IAAK8C,KAAKtJ,OAAOgf,gBAAiB,CAC9B,IAAIC,EAAM3V,KAAKtJ,OAAOye,MAAMS,QAC5BD,EAAIE,YACJF,EAAMA,EAAIlM,QAAQzJ,KAAKtJ,OAAOuG,mBAC1B9F,iBAAkB,EACtBsC,EAAGqc,aAAaH,GAAKI,KAAK,SAAUrY,GAChC6J,EAAM6M,YAAc4B,WAASC,SAASvY,EAAEuW,OAAQ1M,EAAM7Q,OAAOuG,iBAAiB,GAIlE,IAHF1E,YAAU,sBAAuBgP,EAAM7Q,QAAQ+G,OAAO,SAAUC,GACtE,MAAoC,OAA7BA,EAAEwY,YAAYC,aACtB5e,SAEC6e,WAAS,+BAA+B,EAAM7O,EAAM7Q,QAC/CgB,oBAAkB6P,EAAM8O,mBACzBD,WAAS,UAAU,EAAO7O,EAAM8O,iBAChChY,WAAS,oBAAqBkJ,EAAM7Q,QAAQ4f,mBAAmB/O,EAAM8O,iBACrE9O,EAAM8O,gBAAkB,MAE5B9O,EAAM7Q,OAAOiB,KAAK4e,wBAM7B9X,aAAgB/B,OACrBsD,KAAKwW,gBAAgB/X,IAG7ByV,EAAiBrX,UAAU2Z,gBAAkB,SAAU/X,GAGnD,GAFAuB,KAAKsU,iBACLtU,KAAKqU,WACArU,KAAKtJ,OAAOwG,UAIb,IAAK,IAAI7F,EAAI,EAAGA,EAAIgB,OAAOC,KAAKmG,GAAMlH,OAAQF,IAAK,CAC/C,IAAIof,EAAWhY,EAAKpH,GACpB2I,KAAKsU,cAAc9b,KAAK4D,YAAWqa,IAC9B/e,oBAAkB+e,EAASzW,KAAKtJ,OAAOwG,aACxC8C,KAAKqU,QAAQ7b,KAAKie,EAASzW,KAAKtJ,OAAOwG,iBAP/C8C,KAAKsU,cAAgB7V,EAWzB,GAAIuB,KAAKhF,gBAAiB,CAIjB,IAHD0b,KACAC,EAAc,IAAI/f,cAAYoJ,KAAKsU,eAAesC,cAAa,IAAIxB,SAClEyB,MAAM7W,KAAKtJ,OAAOuG,kBACvB,IAAS5F,EAAI,EAAGA,EAAIsf,EAAYpf,OAAQF,IAAK,CACzC,IAAIyf,EAAYH,EAAYtf,GACxB6C,EAAQ8F,KAAKqU,QAAQ7V,QAAQsY,EAAUjf,KAC3C,IAAKH,oBAAkBof,EAAUjf,MACzBqC,GAAS,EADjB,CAEQ,IAAI8P,EAAa8M,EAAe,MAChC9W,KAAKsU,cAAcpa,GAAO8F,KAAKtJ,OAAO0G,cAAgB4M,OAI9D0M,EAASle,KAAK0J,MAAMwU,EAAUI,EAAUC,OAE5C/W,KAAKsU,cAAgBtU,KAAKgX,oBAAoBN,GAElD,GAAKre,OAAOC,KAAK0H,KAAKsU,eAAe/c,OAMjCyI,KAAKiX,cAAcjX,KAAKsU,mBANiB,CACzC,IACI4C,IAAkBlX,KAAKtJ,OAAOC,sBAAsBC,gBAAgBoJ,KAAKtJ,OAAc,QAC3FsJ,KAAKtJ,OAAO8G,SAAW0Z,EAAiBlX,KAAKtJ,OAAiB,cAKlEsJ,KAAKuU,aAAe,GAYxBL,EAAiBrX,UAAUma,oBAAsB,SAAUN,GAEvD,IADA,IAAIzC,KACGjU,KAAKsU,cAAc/c,OAAS,GAAKmf,EAASnf,OAAS,GAAG,CACzD,IAAI2C,EAAQwc,EAASlY,QAAQwB,KAAKsU,cAAc,KACjC,IAAXpa,EACA8F,KAAKsU,cAAc6C,SAGnBlD,EAAOzb,KAAKwH,KAAKsU,cAAc6C,SAC/BT,EAASvZ,OAAOjD,EAAO,IAG/B,OAAO+Z,GASXC,EAAiBrX,UAAU8X,uBAAyB,SAAUzR,GAC1D,IAAIhL,EAAUgL,EAAK+Q,OACnB,GAAKjU,KAAKtJ,OAAOgf,iBAAoB1V,KAAKoU,YAAY7c,QAChDyI,KAAKtJ,OAAO0gB,kBAKd,GAAKpX,KAAKtJ,OAAO0gB,kBAoBR1f,oBAAkBQ,IACnB8H,KAAKkV,kBAAkBhd,QApB3B,IAAK,IAAI4W,EAAM,EAAGA,EAAM5W,EAAQX,OAAQuX,IAChC3X,EAAgB6I,KAAKtJ,SAAWwB,EAAQ4W,GAAKzV,iBAAmB2G,KAAKtJ,OAAOuC,gBAC5Ef,EAAQ4W,GAAK3V,UAAW,GAExBzB,oBAAkBQ,EAAQ4W,GAAK5U,SAC/BhC,EAAQ4W,GAAK1U,SAAWgC,YAAWlE,EAAQ4W,IAC3C5W,EAAQ4W,GAAK9V,SAAWqe,SAAOrX,KAAKtJ,OAAOmd,QAAQC,GAAK,UACxDsC,WAAS,sBAAwBle,EAAQ4W,GAAK9V,SAAUd,EAAQ4W,GAAM9O,KAAKtJ,QAC3EwB,EAAQ4W,GAAK3U,MAAQ,EACrBjC,EAAQ4W,GAAK5U,MAAQod,KAAKC,KAAqB,IAAhBD,KAAKE,WAC/Btf,EAAQ4W,GAAK9O,KAAKtJ,OAAOgf,mBACyC,IAAnE1V,KAAKoU,YAAY5V,QAAQtG,EAAQ4W,GAAK9O,KAAKtJ,OAAOwG,eAClDhF,EAAQ4W,GAAKzV,iBAAkB,GAEnCnB,EAAQ4W,GAAK3B,cAAgB,gBAnBzCnN,KAAKqW,gBAAkBnT,EACvBkT,WAAS,UAAU,EAAMlT,GA4B7BA,EAAK+Q,OAASjU,KAAKtJ,OAAO0gB,kBAAoBpX,KAAKtJ,OAAO8G,SAAWtF,EACrE8H,KAAKtJ,OAAOqc,OAAO,gBAAiB7P,IAaxCgR,EAAiBrX,UAAUkY,qBAAuB,SAAU0C,EAAYC,GACpE,IAAIC,EAAW3X,KAAKtJ,OAAOmI,UAC3B,GAAImB,KAAKtJ,OAAOyc,YAAa,CACzB,IAAIlL,EAAOjI,KAAKtJ,OAAOkhB,kBAAkB3P,KACzC0P,KAAclP,MAAM1L,KAAKkL,GAE7B,IAAI4P,EACJ,GAAIJ,EAAWxP,KAAK1Q,OAAS,EAAG,CACvBmgB,IACDD,EAAW/e,OAAOS,UAAW,GAEjC,IAAK,IAAI9B,EAAI,EAAGA,EAAIogB,EAAWxP,KAAK1Q,OAAQF,IAAK,CAE7C,GADAogB,EAAWxP,KAAK5Q,GAAGmD,MAAMG,QAAU,YAC/BqF,KAAKtJ,OAAO0gB,kBAAmB,CAC/B,IAAIU,EAAYL,EAAWxP,KAAK5Q,GAAG0gB,uBAAuB,sBAAsB,GAChFF,EAAc7X,KAAKtJ,OAAOyc,YAAcnT,KAAKtJ,OAAOiB,KAAKwE,wBAAwBsb,EAAWxP,KAAK5Q,GAAGwS,UAChG7J,KAAKtJ,OAAOiB,KAAKqgB,oBAAoBP,EAAWxP,KAAK5Q,GAAGgV,aAAa,aAAa5N,MACjF/G,oBAAkBogB,IAAcD,EAAY1e,WAC7CmX,YAAUwH,GAAY,oBACtBvK,eAAauK,GAAY,uBAE7B,IAAIG,MACJA,EAAYN,EAASla,OAAO,SAAUkE,GAClC,OAAOA,EAAEsJ,cAAc,kBAAoB4M,EAAY3d,MAAQ,SAAW2d,EAAY1d,MAAQ,OAEpF5C,QAAUsgB,EAAY1e,UAChC6G,KAAK+U,sBAAuBrc,OAAQmf,EAAa5P,KAAMgQ,EAAWC,UAAWT,EAAWS,YAAa,GAG7G,IAAIC,EAAcV,EAAWxP,KAAK5Q,GAAG4T,cAAc,wBAC9CvT,oBAAkBygB,IACnBnY,KAAKtJ,OAAOiB,KAAKygB,gBAAgBhG,OAAO+F,SAKhDnY,KAAKqY,sBAAuB3f,OAAQ+e,EAAW/e,OAAQuP,KAAMwP,EAAWxP,KAAMiQ,UAAWT,EAAWS,aAG5GhE,EAAiBrX,UAAUwb,qBAAuB,SAAUZ,GACxD,IAAIlQ,EAAQvH,KACRkD,GAASvE,IAAK8Y,EAAWS,UAAWzZ,KAAMgZ,EAAW/e,QACrDe,EAAKuG,KAAKtJ,OAAOC,WACjBgf,EAAM3V,KAAKtJ,OAAOiB,KAAK2gB,gBAAgBC,gBACvCC,EAAc7C,EAAIE,QAAQpY,OAAO,SAAUC,GAAK,MAAgB,WAATA,EAAE+a,IAA4B,YAAT/a,EAAE+a,KAClF9C,EAAIE,QAAU2C,EACd7C,EAAIxe,iBAAkB,EACtBwe,EAAIH,MAAMxV,KAAKtJ,OAAOuG,gBAAiB,QAASwa,EAAW/e,OAAOsH,KAAKtJ,OAAOwG,YAC9Ewb,cAAY1Y,KAAKtJ,OAAOmd,SACxBpa,EAAGqc,aAAaH,GAAKI,KAAK,SAAUrY,GAChC,IAAIvF,EAAQoP,EAAM7Q,OAAOiB,KAAKghB,gBAAgBlQ,QAC1CmQ,EAAMzgB,EAAMqG,QAAQiZ,EAAW/e,SACtB,IAATkgB,GACArR,EAAM7Q,OAAOiB,KAAKkhB,gBAAgBnJ,QAAQ,SAAUzH,GAC5CA,EAAKxJ,KAAKzF,WAAaye,EAAW/e,OAAOM,WACzC4f,EAAM3Q,EAAK/N,SAIvB,IAAI4e,EAAYvgB,YAAU,mBAAoBmF,GAC1CuW,EAASvW,EAAEuW,OACfwD,EAAW/e,OAAOY,aAAe2a,EACjC,IAAK,IAAItS,EAAI,EAAGA,EAAIsS,EAAO1c,OAAQoK,IAAK,CACpCsS,EAAOtS,GAAGvH,SAAWgC,YAAW6X,EAAOtS,IACvCsS,EAAOtS,GAAGxH,MAAQsd,EAAW/e,OAAOyB,MAAQ,EAC5C8Z,EAAOtS,GAAGzH,MAAQod,KAAKC,KAAqB,IAAhBD,KAAKE,UACjC,IAAIja,EAAanB,YAAWqb,EAAW/e,eAChC6E,EAAWjE,aAClB2a,EAAOtS,GAAG7I,WAAayE,EACvB0W,EAAOtS,GAAGrD,eAAiBmZ,EAAW/e,OAAOM,SAC7Cib,EAAOtS,GAAG3I,SAAWqe,SAAO9P,EAAM7Q,OAAOmd,QAAQC,GAAK,UACtDG,EAAOtS,GAAGwL,cAAgB,UAC1BiJ,WAAS,sBAAwBnC,EAAOtS,GAAG3I,SAAUib,EAAOtS,GAAI4F,EAAM7Q,SAEjEud,EAAOtS,GAAG4F,EAAM7Q,OAAOgf,mBAAsF,IAAlEnO,EAAM6M,YAAY5V,QAAQyV,EAAOtS,GAAG4F,EAAM7Q,OAAOwG,aACxF4b,IAAcA,EAAUnX,KAC7BsS,EAAOtS,GAAGtI,iBAAkB,EAC5B4a,EAAOtS,GAAGxI,UAAW,GAEzBhB,EAAMgF,OAAOyb,EAAMjX,EAAI,EAAG,EAAGsS,EAAOtS,IAMxC,GAJAyU,WAAS,SAAUje,EAAOuF,GAC1B0Y,WAAS,SAAU,sBAAuB1Y,GAC1C6J,EAAM7Q,OAAO0S,QAAQ2P,EAAuBrb,GAC5C6Y,cAAYhP,EAAM7Q,OAAOmd,SACrBtM,EAAM7Q,OAAOiB,KAAKqhB,WAAWzhB,OAAS,IAAMgQ,EAAM7Q,OAAO0H,qBAAsB,CAC/E,IAAI6a,EAAY1gB,YAAU,QAASmF,GAKnC,GAHIhG,oBAAkBuhB,KAClBA,EAAY5a,WAAS,yBAA0BkJ,EAAM7Q,QAAQwiB,eAAe,IAAI9D,WAE/E1d,oBAAkBuhB,GAAY,CAC/B,IAAIE,EAAeF,EAAUpD,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,iBAATA,EAAEX,KACpE/a,EAAU,OAAI6J,EAAM7Q,OAAO2iB,cAAcC,sBAAsBH,EAAczb,EAAU,QAAG,IAGlGA,EAAE6Q,MAAQhH,EAAM7Q,OAAOiB,KAAKqZ,aAAauI,kBACzC,IAAIC,KACAjS,EAAM7Q,OAAO0H,sBACbmJ,EAAMkS,oBAAoBD,GAE9B,IAAIE,GAAexf,MAAO0e,EAAK5O,UAAWiK,GACtC1M,EAAM7Q,OAAOijB,wBACbpS,EAAM7Q,OAAOqc,OAAO,yBAA0B2G,GAG9Crb,WAAS,oBAAqBkJ,EAAM7Q,QAAQ4f,mBAAmB5Y,EAAG8b,GAEtEjS,EAAM7Q,OAAO0S,QAAQwQ,EAAiB1W,MAG9CgR,EAAiBrX,UAAU4c,oBAAsB,SAAUD,GACvDA,EAAY3Z,YAAc,UAC1BuW,WAAS,oBAAoB,EAAMoD,GACnC,IAAIK,EAAgBxb,WAAS,qBAAsB2B,KAAKtJ,QACpDojB,EAAczb,WAAS,cAAewb,GACtCE,EAAW1b,WAAS,WAAYwb,GAChCC,EAAYE,UAAYha,KAAKtJ,OAAOiB,KAAKqZ,aAAaiJ,cAAgBH,EAAYI,SAASC,OAC3Fna,KAAKtJ,OAAOiB,KAAKqZ,aAAaiJ,YAAcF,EAASI,OAG7DjG,EAAiBrX,UAAU+X,aAAe,WACtC5U,KAAKyU,cAAe,GAExBP,EAAiBrX,UAAUoa,cAAgB,SAAUxY,EAAM2b,GAEvD,IAAK,IADDC,KACKhjB,EAAI,EAAGe,EAAMC,OAAOC,KAAKmG,GAAMlH,OAAQF,EAAIe,EAAKf,IAAK,CAC1D,IAAIijB,EAAcle,YAAWqC,EAAKpH,IAClCijB,EAAYlgB,SAAWqE,EAAKpH,GAC5B,IAAI8C,EAAQ,EAyBZ,GAxBA6F,KAAKuU,cACAlc,OAAOwE,UAAUC,eAAeC,KAAKud,EAAa,WACnDA,EAAYpgB,MAAQ8F,KAAKuU,eAExB7c,oBAAkB4iB,EAAYta,KAAKtJ,OAAO0G,gBAC1Ckd,EAAYta,KAAKtJ,OAAOgf,kBAAoBve,EAAgB6I,KAAKtJ,WAClE4jB,EAAYjhB,iBAAkB,EAC1B2G,KAAKtJ,OAAOwa,oBAAsBxZ,oBAAkBsI,KAAKtJ,OAAOqN,kBAC7DrM,oBAAkB4iB,EAAYta,KAAKtJ,OAAO0G,eAC7Ckd,EAAYnhB,UAAW,EAGvBmhB,EAAYnhB,WAAYzB,oBAAkB4iB,EAAYta,KAAKtJ,OAAOwC,sBAC5DohB,EAAYta,KAAKtJ,OAAOwC,qBAGjCb,OAAOwE,UAAUC,eAAeC,KAAKud,EAAa,WACnDA,EAAYpgB,OAAQogB,EAAYjhB,gBAAkB2G,KAAKuU,cAEvDvU,KAAKhF,iBAAmBtD,oBAAkB4iB,EAAYta,KAAKtJ,OAAOuG,mBAClE+C,KAAKtJ,OAAO6G,WAAW/E,KAAK8hB,GAEhCA,EAAYthB,SAAWqe,SAAOrX,KAAKtJ,OAAOmd,QAAQC,GAAK,UACvDsC,WAAS,sBAAwBkE,EAAYthB,SAAUshB,EAAata,KAAKtJ,SACpEgB,oBAAkB0iB,GAAgB,CACnC,IAAI7c,EAAanB,YAAWge,UACrB7c,EAAWjE,oBACXiE,EAAWyC,KAAKtJ,OAAO0G,cAC1B4C,KAAKhF,wBACEuC,EAAWnD,SAAS4F,KAAKtJ,OAAO0G,cAE3Ckd,EAAYxhB,WAAayE,EACzB+c,EAAYhc,eAAiBf,EAAWvE,SACxCmB,EAAQigB,EAAcjgB,MAAQ,EAYlC,GAVK9B,OAAOwE,UAAUC,eAAeC,KAAKud,EAAa,WACnDA,EAAYngB,MAAQA,GAExBmgB,EAAYnN,cAAgB,WACxBzV,oBAAkB4iB,EAAYta,KAAKtJ,OAAOuG,mBAAqBqd,EAAYxhB,aAC3EkH,KAAKtJ,OAAO8G,SAAShF,KAAK8hB,GAEzBta,KAAKhF,iBAAyC,IAAtBsf,EAAYngB,OACrC6F,KAAKtJ,OAAO6G,WAAW/E,KAAK8hB,IAE3B5iB,oBAAkB4iB,EAAYta,KAAKtJ,OAAO0G,eAAiBkd,EAAYta,KAAKtJ,OAAO0G,cAAc7F,QAAS,CAC3G,IAAImB,EAASsH,KAAKiX,cAAcqD,EAAYta,KAAKtJ,OAAO0G,cAAekd,GACvEA,EAAYhhB,aAAeZ,EAE/B2hB,EAAa7hB,KAAK8hB,GAEtB,OAAOD,GASXnG,EAAiBrX,UAAUmY,cAAgB,SAAU9R,GACjD,IAIIqX,EAJAC,EAAWjiB,YAAU,WAAY2K,GACjCuX,EAAaliB,YAAU,aAAc2K,GACrCwX,EAAaniB,YAAU,aAAc2K,GACrCyX,EAAapiB,YAAU,aAAc2K,GAErC0X,EAAariB,YAAU,aAAc2K,GACrCrD,EAActH,YAAU,cAAe2K,GACvC2X,EAAatiB,YAAU,OAAQ2K,GAC/B5H,EAAS/C,YAAU,SAAU2K,GAC7B4X,EAAgBF,EAChBG,EAAuB/a,KAAKtJ,OAAO6E,0BAA0B,GAC7Dyf,EAAYziB,YAAU,OAAQuiB,GAC5BpjB,oBAAkBojB,IAAqBpjB,oBAAkBojB,EAAcxf,SAAsC,QAAzBwf,EAAcxf,QAC/F5D,oBAAkBojB,EAAcrc,QAAU/G,oBAAkBojB,EAAcrc,KAAKsc,MACpFD,EAAcrc,KAAKsc,GAAwB7X,EAAK+Q,OAAO6G,EAAc5gB,OAAO6gB,GAC5EC,EAAU5gB,SAAS2gB,GAAwB7X,EAAK+Q,OAAO6G,EAAc5gB,OAAO6gB,MAE1ErjB,oBAAkBkjB,IAAeviB,OAAOC,KAAKsiB,GAAYrjB,QAA2B,SAAhBsI,KACtEA,EAAcA,GAA4B+a,EAAW/a,YACrDgb,EAAaA,GAA0BtiB,YAAU,OAAQqiB,GACzDtf,EAASA,GAAkB/C,YAAU,SAAUqiB,GACT,UAAlC5a,KAAKtJ,OAAOmF,aAAaC,OACzBkE,KAAK3E,aAAe2E,KAAKtJ,OAAOiB,KAAKoE,WAAWC,mBAEhDgE,KAAKtJ,OAAOukB,aACZjb,KAAKkb,aAAaL,EAAYvf,EAAQuE,IAU9C,IAKIsb,EACAC,EANAC,GANAd,EADAC,IAAa9iB,oBAAkB+iB,GACrBA,EAGAtjB,EAAgB6I,KAAKtJ,QAAU2H,WAAS,SAAU2B,KAAKtJ,OAAOiB,KAAKhB,YACvEqJ,KAAKtJ,OAAOiB,KAAKhB,sBAEMC,cAAc2jB,EAAQ5jB,WAAW8E,KAAO8e,EACrEhM,EAAQpX,EAAgB6I,KAAKtJ,QAAU2H,WAAS,QAAS2B,KAAKtJ,OAAOC,YACnE0kB,EAAQ9jB,OACVoe,EAAM,IAAIP,QACV6D,EAAY1gB,YAAU,QAAS2K,GAOnC,GAJKxL,oBAAkBuhB,KACnBkC,EAAclC,EAAUpD,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,YAATA,EAAEX,KAC/D2C,EAAcnC,EAAUpD,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,aAATA,EAAEX,MAE9DzY,KAAKtJ,OAAOiB,KAAKI,gBAAkBiI,KAAKtJ,OAAOiB,KAAKK,eAAeV,QAAQC,QAC3EyI,KAAKtJ,OAAOiB,KAAKC,eAAeC,IAAIN,OAAS,IAAQG,oBAAkBuhB,KACvEkC,EAAY5jB,QAAU6jB,EAAY7jB,SAAWyI,KAAKtJ,OAAOukB,YAAc,CACpEvjB,oBAAkBuhB,KAClBA,EAAY,IAAI7D,QAChB6D,EAAY5a,WAAS,yBAA0B2B,KAAKtJ,QAAQykB,YAAYlC,GACxEA,EAAY5a,WAAS,yBAA0B2B,KAAKtJ,QAAQ0kB,YAAYnC,IAE5E,IAAIqC,EAAYrC,EAAUpD,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,YAATA,EAAEX,KAC7D8C,EAAYtC,EAAUpD,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,aAATA,EAAEX,KACjE9C,EAAIE,QAAUyF,EAAU/hB,OAAOgiB,GAC/B,IAAIC,EAAe,IAAI5kB,cAAYykB,GAASzE,aAAajB,GAIzD,GAHA3V,KAAKtJ,OAAOqc,OAAO,oBAAsBtU,KAAM+c,IAC/CH,EAAUrb,KAAK0U,YAAYT,OAC3BjU,KAAK0U,YAAYT,OAAS,KACtBjU,KAAKtJ,OAAOiB,KAAKqhB,WAAWzhB,OAAS,EAAG,CACxC,IAAI4d,EAAQ5c,YAAU,QAAS2K,GAI/B,GAHIxL,oBAAkBuhB,KAClBA,EAAY5a,WAAS,yBAA0B2B,KAAKtJ,QAAQwiB,eAAe,IAAI9D,WAE9E1d,oBAAkByd,GAAQ,CAC3B,IAAIgE,EAAehE,EAAMU,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,iBAATA,EAAEX,KAChE4C,EAAUrb,KAAKtJ,OAAO2iB,cAAcC,sBAAsBH,EAAckC,GAAS,KAI7F,GAAIrb,KAAKtJ,OAAOiB,KAAKqhB,WAAWzhB,QAA2D,IAAjDyI,KAAKtJ,OAAOiB,KAAK4G,aAAajH,QAAQC,QACtB,IAAnDyI,KAAKtJ,OAAOiB,KAAKK,eAAeV,QAAQC,SAAiByI,KAAKtJ,OAAOiB,KAAKC,eAAeC,IAAIN,OAAQ,CACxG,IAAIkkB,EAAcljB,YAAU,QAAS2K,GACjCxL,oBAAkB+jB,KAClBA,EAAcpd,WAAS,yBAA0B2B,KAAKtJ,QAAQwiB,eAAe,IAAI9D,UAEjF+D,EAAesC,EAAY5F,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,iBAATA,EAAEX,KACtE4C,EAAUrb,KAAKtJ,OAAO2iB,cAAcC,sBAAsBH,EAAcnZ,KAAKtJ,OAAO8G,UAAU,GAElG,GAAIwC,KAAKtJ,OAAOiB,KAAK4G,aAAajH,QAAQC,OAAS,GAAKyI,KAAKyU,aAAc,CACvEzU,KAAKyU,cAAe,EAIpB,IAAK,IAHDlX,EAAayC,KAAKtJ,OAAO6G,WAEzBme,GADAvG,EAAQ5c,YAAU,QAAS2K,GAClB,IAAIkS,SACRuG,EAAM3b,KAAKtJ,OAAOiB,KAAK4G,aAAajH,QAAQC,OAAS,EAAGokB,GAAO,EAAGA,IAAO,CAC9E,IACIzP,EAAMlM,KAAKtJ,OAAOiB,KAAK4H,aAAad,KAAqB,iBAAEuB,KAAKtJ,OAAOiB,KACvE4G,aAAajH,QAAQqkB,GAAK7I,OAC1B8I,EAAU1P,EAAI2P,cAAgBriB,EAAUwG,KAAKtJ,QAC7CwV,EAAI2P,aAAaC,KAAK5P,GACtBlM,KAAKtJ,OAAOiB,KAAK4G,aAAajH,QAAQqkB,GAAKI,UAC/CL,EAAOM,OAAOhc,KAAKtJ,OAAOiB,KAAK4G,aAAajH,QAAQqkB,GAAK7I,MAAO8I,GAEpE,IACIK,GAAavgB,aADE,IAAI9E,cAAY2G,GAAYqZ,aAAa8E,GACfF,aAAcH,EAASK,OAAQA,GAM5E,GALA1b,KAAKtJ,OAAOqc,OAAO,aAAckJ,GACjCZ,EAAUY,EAASvgB,aACnBsE,KAAK0U,YAAYT,OAAS,KAC1BjU,KAAKwU,WAAa6G,EAClBrb,KAAKtJ,OAAOqc,OAAO,kBACf/S,KAAKtJ,OAAOiB,KAAKqhB,WAAWzhB,OAAS,IAAMG,oBAAkByd,GAAQ,CAGjEgE,EADU5gB,YAAU,QAAS2K,GACN2S,QAAQpY,OAAO,SAAU2b,GAAK,MAAgB,iBAATA,EAAEX,KAClE4C,EAAUrb,KAAKtJ,OAAO2iB,cAAcC,sBAAsBH,EAAcnZ,KAAKwU,YAHhE,IAMrBjG,EAAQpX,EAAgB6I,KAAKtJ,QAAU2H,WAAS,QAAS2B,KAAKtJ,OAAOC,YAC/D0kB,EAAQ9jB,OACd,IAAI2kB,EAAOlc,KAAKmc,OAAOd,EAAS9M,EAAOiM,EAAUG,EAAYD,EAAYxX,GACzEmY,EAAUa,EAAKjI,OACf1F,EAAQ2N,EAAK3N,MACbrL,EAAK+Q,OAASoH,EACdnY,EAAKqL,MAAQA,EACbvO,KAAKtJ,OAAOqc,OAAO,gBAAiB7P,IAExCgR,EAAiBrX,UAAUsf,OAAS,SAAUd,EAAS9M,EAAOiM,EAAUG,EAAYD,EAAYxX,GAC5F,IAAIlD,KAAKtJ,OAAOqa,aAAiByJ,GAA2B,gBAAfE,GACpCC,GAAwC,gBAA1B3a,KAAKtJ,OAAO0lB,WAM9B,IAAKpc,KAAKtJ,OAAO0H,sBAAwB4B,KAAKtJ,OAAOijB,4BAA8Ba,GAA2B,gBAAfE,IAC3D,SAAlCrc,WAAS,cAAe6E,GAAkB,CAC7C,IAAImZ,EAAUrc,KAAKtJ,OAAOijB,wBAA0BzW,EAAO7E,WAAS,aAAc6E,GAClFlD,KAAKtJ,OAAOqc,OAAOuJ,GAAwBrI,OAAQoH,EAAS9M,MAAOA,EAAOqM,WAAYyB,IACtFhB,EAAUrb,KAAK0U,YAAYT,OAC3B1F,EAAQvO,KAAK0U,YAAYnG,YAVzBvO,KAAKtJ,OAAOqc,OAAOuJ,GAAwBrI,OAAQoH,EAAS9M,MAAOA,IACnE8M,EAAUrb,KAAK0U,YAAYT,OAC3B1F,EAAQpX,EAAgB6I,KAAKtJ,QAAU2H,WAAS,QAAS2B,KAAKtJ,OAAOC,YAC/DqJ,KAAK0U,YAAYnG,MAS3B,IACIgO,EAA0B,0BAC9B,KAAoB,IAAf5B,GAAwBzX,EAAgB,cAAMxL,oBAAkBwL,EAAKqZ,KACnErZ,EAAKqZ,MAAyD,aAA1Bvc,KAAKtJ,OAAO0lB,UAA0B,CAE7E,IAAK,IADDI,KACKnlB,EAAI,EAAGA,EAAIgkB,EAAQ9jB,OAAQF,IAAK,CAClBoB,EAAgBuH,KAAKtJ,OAAQ2kB,EAAQhkB,GAAI2I,KAAKtJ,OAAO6G,aAEpEif,EAAchkB,KAAK6iB,EAAQhkB,IAInCkX,GADA8M,EAAUmB,GACMjlB,OAGpB,OADc0c,OAAQoH,EAAS9M,MAAOA,IAG1C2F,EAAiBrX,UAAUgY,WAAa,SAAU4H,GAC9Czc,KAAK0U,YAAc+H,GAEvBvI,EAAiBrX,UAAUqe,aAAe,SAAUL,EAAYvf,EAAQuE,GAC/C,WAAhBA,GAA4C,SAAhBA,GAC7BG,KAAKtJ,OAAOqc,OAAO2J,IAAqBziB,MAAO4gB,EAAYvf,OAAQA,GAAUuE,IAE7D,cAAhBA,GAAiE,UAAlCG,KAAKtJ,OAAOmF,aAAaC,MACxDkE,KAAKtJ,OAAOqc,OAAO4J,QAGpBzI,MC7kBX,SAAW0I,GACPA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAoB,OAAI,GAAK,SACzCA,EAAYA,EAAuB,UAAI,GAAK,YAC5CA,EAAYA,EAAyB,YAAI,GAAK,cAC9CA,EAAYA,EAAyB,YAAI,GAAK,cAC9CA,EAAYA,EAAuB,UAAI,GAAK,YAC5CA,EAAYA,EAAuB,UAAI,IAAM,YAC7CA,EAAYA,EAAmB,MAAI,IAAM,QACzCA,EAAYA,EAAuB,UAAI,IAAM,YAC7CA,EAAYA,EAAwB,WAAI,IAAM,aAdlD,CAeGA,gBAAgBA,mBAOnB,SAAWC,GACPA,EAAiBA,EAA0B,QAAI,GAAK,UACpDA,EAAiBA,EAA6B,WAAI,GAAK,aACvDA,EAAiBA,EAAgC,cAAI,GAAK,gBAC1DA,EAAiBA,EAAiC,eAAI,GAAK,iBAC3DA,EAAiBA,EAAuB,KAAI,GAAK,OACjDA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAAuB,KAAI,GAAK,OACjDA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAA4B,UAAI,GAAK,YACtDA,EAAiBA,EAA8B,YAAI,GAAK,cACxDA,EAAiBA,EAA4B,UAAI,IAAM,YACvDA,EAAiBA,EAA4B,UAAI,IAAM,YACvDA,EAAiBA,EAA2B,SAAI,IAAM,WACtDA,EAAiBA,EAA2B,SAAI,IAAM,WACtDA,EAAiBA,EAA2B,SAAI,IAAM,WACtDA,EAAiBA,EAAyB,OAAI,IAAM,SAhBxD,CAiBGA,qBAAqBA,wBC7CxB,IAAIjc,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5Dmb,GAA8B,SAAU7a,GAExC,SAAS6a,IACL,OAAkB,OAAX7a,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KA0B/D,OA5BAY,GAAUkc,EAAc7a,GAIxBZ,IACIc,WAAS,KACV2a,EAAajgB,UAAW,gBAAY,GACvCwE,IACIc,WAAS,IACV2a,EAAajgB,UAAW,iBAAa,GACxCwE,IACIc,WAAS,IACV2a,EAAajgB,UAAW,mBAAe,GAC1CwE,IACIc,cACD2a,EAAajgB,UAAW,yBAAqB,GAChDwE,IACIc,YAAS,IACV2a,EAAajgB,UAAW,yBAAqB,GAChDwE,IACIc,YAAS,IACV2a,EAAajgB,UAAW,iBAAa,GACxCwE,IACIc,WAAS,OACV2a,EAAajgB,UAAW,gBAAY,GACvCwE,IACIc,WAAS,QACV2a,EAAajgB,UAAW,oBAAgB,GACpCigB,GACT1a,iBCrDExB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAQ5Dob,GAAiC,SAAU9a,GAE3C,SAAS8a,IACL,IAAIxV,EAAmB,OAAXtF,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAGhE,OAFAuH,EAAMyV,KAAO,IAAIC,uBACjB1V,EAAM8L,cACC9L,EAiFX,OAtFA3G,GAAUmc,EAAiB9a,GAe3B8a,EAAgBlgB,UAAUqgB,aAAe,SAAUC,GAC3Cnd,KAAKod,SAAWpd,KAAKod,OAAOC,UAAYrd,KAAKod,OAAOA,UACpDpd,KAAKsd,SAAWtd,KAAKud,kBAAkBvd,KAAKod,UAQpDL,EAAgBlgB,UAAU0gB,kBAAoB,SAAUH,GACpD,OAAIA,EAAOja,KACAnD,KAAKgd,KAAKQ,cAAcJ,GAGxBpd,KAAKgd,KAAKS,gBAAgBL,IAOzCL,EAAgBlgB,UAAU6gB,aAAe,WACrC,OAAO1d,KAAKsd,UAOhBP,EAAgBlgB,UAAU8gB,YAAc,SAAUC,QAC/B,IAAXA,IAAqBA,WACGC,IAAxB7d,KAAK8d,iBACL9d,KAAKqT,WAAW0K,eAAaC,WAAUA,WAASC,WAAcxF,GAAIyF,UAAQle,KAAK8d,eAAgBF,GAC3FO,SAAU,oBAQtBpB,EAAgBlgB,UAAUuhB,YAAc,SAAUjb,GAC9C,OAAOnD,KAAKqT,WAAW0K,eAAaC,WAAU7a,KAOlD4Z,EAAgBlgB,UAAUwhB,oBAAsB,SAAUC,GACtDte,KAAKS,cAAc6d,GAAM,IAE7Bjd,IACIc,cACD4a,EAAgBlgB,UAAW,YAAQ,GACtCwE,IACIc,cACD4a,EAAgBlgB,UAAW,sBAAkB,GAChDwE,IACIc,cACD4a,EAAgBlgB,UAAW,aAAS,GACvCwE,IACIc,cACD4a,EAAgBlgB,UAAW,cAAU,GACxCwE,IACIc,cACD4a,EAAgBlgB,UAAW,kBAAc,GAC5CwE,IACIc,cACD4a,EAAgBlgB,UAAW,uBAAmB,GAC1CkgB,GACT3a,iBAEEmc,GAA8B,SAAUtc,GAExC,SAASsc,IACL,OAAkB,OAAXtc,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAQ/D,OAVAY,GAAU2d,EAActc,GAIxBZ,IACIiB,gBAAeya,KAChBwB,EAAa1hB,UAAW,eAAW,GACtCwE,IACIc,YAAS,IACVoc,EAAa1hB,UAAW,wBAAoB,GACxC0hB,GACTnc,iBC/HExB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5D6c,GAA8B,SAAUvc,GAExC,SAASuc,IACL,OAAkB,OAAXvc,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAmC/D,OArCAY,GAAU4d,EAAcvc,GAIxBZ,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,mBAAe,GAC1CwE,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,oBAAgB,GAC3CwE,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,qBAAiB,GAC5CwE,IACIc,WAAS,SACVqc,EAAa3hB,UAAW,YAAQ,GACnCwE,IACIc,WAAS,QACVqc,EAAa3hB,UAAW,sBAAkB,GAC7CwE,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,2BAAuB,GAClDwE,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,yBAAqB,GAChDwE,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,+BAA2B,GACtDwE,IACIc,WAAS,KACVqc,EAAa3hB,UAAW,gBAAY,GACvCwE,IACIc,gBACDqc,EAAa3hB,UAAW,cAAU,GACrCwE,IACIc,YAAS,IACVqc,EAAa3hB,UAAW,wBAAoB,GACxC2hB,GACTpc,iBC9DExB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5D8c,GAAgC,SAAUxc,GAE1C,SAASwc,IACL,OAAkB,OAAXxc,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAQ/D,OAVAY,GAAU6d,EAAgBxc,GAI1BZ,IACIc,cACDsc,EAAe5hB,UAAW,aAAS,GACtCwE,IACIc,cACDsc,EAAe5hB,UAAW,iBAAa,GACnC4hB,GACTrc,iBAKEsc,GAA8B,SAAUzc,GAExC,SAASyc,IACL,OAAkB,OAAXzc,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAQ/D,OAVAY,GAAU8d,EAAczc,GAIxBZ,IACIiB,gBAAemc,KAChBC,EAAa7hB,UAAW,eAAW,GACtCwE,IACIc,YAAS,IACVuc,EAAa7hB,UAAW,mBAAe,GACnC6hB,GACTtc,iBCpDExB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GAM5Dgd,GAAwC,SAAU1c,GAElD,SAAS0c,IACL,OAAkB,OAAX1c,GAAmBA,EAAOC,MAAMlC,KAAM0B,YAAc1B,KAW/D,OAbAY,GAAU+d,EAAwB1c,GAIlCZ,IACIc,YAAS,IACVwc,EAAuB9hB,UAAW,mBAAe,GACpDwE,IACIc,WAAS,IACVwc,EAAuB9hB,UAAW,iBAAa,GAClDwE,IACIc,WAAS,IACVwc,EAAuB9hB,UAAW,qBAAiB,GAC/C8hB,GACTvc,iBCtCExB,GAAwC,WACxC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBxI,OAAO2I,iBAChBC,wBAA2BvE,OAAS,SAAUoE,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIpD,KAAKoD,EAAOA,EAAEjE,eAAea,KAAImD,EAAEnD,GAAKoD,EAAEpD,MACpDmD,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOlB,KAAKmB,YAAcL,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEjE,UAAkB,OAANkE,EAAa1I,OAAO+I,OAAOL,IAAMG,EAAGrE,UAAYkE,EAAElE,UAAW,IAAIqE,IAV3C,GAaxCG,GAA0C,SAAUC,EAAYC,EAAQ1J,EAAK2J,GAC7E,IAA2HV,EAAvHW,EAAIC,UAAUnK,OAAQoK,EAAIF,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOnJ,OAAOuJ,yBAAyBL,EAAQ1J,GAAO2J,EACrH,GAAuB,iBAAZK,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQ1J,EAAK2J,QACpH,IAAK,IAAInK,EAAIiK,EAAW/J,OAAS,EAAGF,GAAK,EAAGA,KAASyJ,EAAIQ,EAAWjK,MAAIsK,GAAKF,EAAI,EAAIX,EAAEa,GAAKF,EAAI,EAAIX,EAAES,EAAQ1J,EAAK8J,GAAKb,EAAES,EAAQ1J,KAAS8J,GAChJ,OAAOF,EAAI,GAAKE,GAAKtJ,OAAO0J,eAAeR,EAAQ1J,EAAK8J,GAAIA,GA2C5Did,GAA0B,SAAU3c,GAEpC,SAAS2c,EAAS7e,EAAS8T,GACvB,IAAItM,EAAQtF,EAAOlF,KAAKiD,KAAMD,EAAS8T,IAAY7T,KACnDuH,EAAMmN,eACNnN,EAAMsX,sBACNtX,EAAMuX,4BACNvX,EAAMwX,eAAiB,iBACvBxX,EAAMyX,eAAiB,iBACvBzX,EAAM4M,aAAe,eACrB5M,EAAM0X,sBAAwB,SAAUC,EAAKC,GACzC,GAAID,EAAK,CAIL,IAAK,IAHD5mB,EAAOD,OAAOC,KAAK4mB,GACnBE,GAAU,EACVC,GAAe,WAAY,eAAgB,WAAY,WAAY,aAAc,iBAAkB,SAC9FhoB,EAAI,EAAGA,EAAIiB,EAAKf,OAAQF,IAC7B,GAAI6nB,EAAI5mB,EAAKjB,MAAQ8nB,EAAQ7mB,EAAKjB,MAAyC,IAAlCgoB,EAAY7gB,QAAQlG,EAAKjB,IAAY,CAE1E,KADa6nB,EAAI5mB,EAAKjB,cAAeioB,MAAQH,EAAQ7mB,EAAKjB,cAAeioB,OACzDJ,EAAI5mB,EAAKjB,IAAIkoB,YAAcJ,EAAQ7mB,EAAKjB,IAAIkoB,UAAY,CACpEH,GAAU,EACV,OAIZ,OAAOA,EAGP,OAAO,GAGfI,EAAW3c,OAAO4c,IAClBrJ,WAAS,mBAAoB7O,EAAMmY,yBAA0BnY,GAM7D,OAJK7P,oBAAkB6P,EAAMoY,gBAAsB,SAC/C/c,OAAKC,OAAOF,UAEhB4E,EAAM5P,KAAO,IAAIiL,OACV2E,EApCX3G,GAAUge,EAAU3c,GAsCpBud,EAAaZ,EAWbA,EAAS/hB,UAAU+iB,YAAc,SAAUC,EAAuBC,EAAkBC,EAAUC,GAE1F,OAAOhgB,KAAKigB,kBAAkBC,IAAIL,EAAuBC,EAAkBC,EAAUC,GAAQ,IAYjGpB,EAAS/hB,UAAUsjB,UAAY,SAAUN,EAAuBC,EAAkBC,EAAUC,GAExF,OAAOhgB,KAAKigB,kBAAkBC,IAAIL,EAAuBC,EAAkBC,EAAUC,GAAQ,IAWjGpB,EAAS/hB,UAAUujB,UAAY,SAAUC,EAAqBP,EAAkBQ,EAAQN,GACpF,OAAOhgB,KAAKugB,gBAAgBL,IAAIG,EAAqBP,EAAkBQ,EAAQN,IAQnFpB,EAAS/hB,UAAUkG,cAAgB,WAC/B,MAAO,YAQX6b,EAAS/hB,UAAU2jB,UAAY,WAC3BxgB,KAAKygB,iBACLzgB,KAAK0gB,iBACL1gB,KAAK2gB,eACDC,MAAO,QACPC,MAAO,QACPC,MAAO,QACPC,OAAQ,UACRC,UAAW,aACXC,YAAa,eACbC,UAAW,SACXC,WAAY,WAEhBnhB,KAAKohB,KAAO,IAAIC,OAAK,WAAYrhB,KAAK2gB,cAAe3gB,KAAKshB,QACtDthB,KAAKhF,iBAAmBtD,oBAAkBsI,KAAK5C,gBAC/C4C,KAAK5C,aAAe,aAW5BwhB,EAAS/hB,UAAU0kB,aAAe,SAAUpmB,EAAY4gB,EAAWyF,GAC3DxhB,KAAKyhB,YACLzhB,KAAKyhB,WAAWC,WAAWvmB,EAAY4gB,EAAWyF,IAQ1D5C,EAAS/hB,UAAU8kB,aAAe,WAC1B3hB,KAAKyhB,YACLzhB,KAAKyhB,WAAWE,gBAUxB/C,EAAS/hB,UAAU+kB,iBAAmB,SAAU9O,GACxC9S,KAAKyhB,YACLzhB,KAAKyhB,WAAWG,iBAAiB9O,IAWzC8L,EAAS/hB,UAAUglB,OAAS,SAAUC,GAClC9hB,KAAKrI,KAAKkqB,OAAOC,IAarBlD,EAAS/hB,UAAUklB,eAAiB,SAAUC,GAC1ChiB,KAAKiiB,aAAaF,eAAeC,GACjChiB,KAAKkiB,qBASTtD,EAAS/hB,UAAUslB,eAAiB,SAAUC,EAAWC,GACrDriB,KAAKrI,KAAKwqB,eAAeC,EAAWC,IAExCzD,EAAS/hB,UAAU4jB,eAAiB,WAEhC,IAAIa,EAASD,OAAKC,OACdgB,KACJlM,WAASpW,KAAKshB,UAAYgB,GAC1B,IAAIC,EACJA,KACAA,EAAahqB,YAAUyH,KAAKshB,OAAQA,GACpC,IAAIkB,EACJA,KACAA,EAAiBjqB,YAAUyH,KAAK+C,gBAAiBwf,GACjDnM,WAAS,OAAQoM,EAAgBjqB,YAAUyH,KAAKshB,OAAQgB,IACxDjB,OAAKoB,KAAKH,IASd1D,EAAS/hB,UAAU0T,MAAQ,WACvBvQ,KAAK0iB,YAAYnS,SAErBqO,EAAS/hB,UAAU8lB,yBAA2B,SAAUjlB,GACpD,GAAIsC,KAAK4iB,cAAe,CACpB,IACIC,OAAe,EAEflkB,OAAM,EACNmkB,OAAiB,EACrB,OAAQplB,EAAEpC,QACN,IAAK,gBACD0E,KAAK+iB,YACL,MACJ,IAAK,cACD/iB,KAAKgjB,cACL,MACJ,IAAK,mBAIW,QADZrkB,EAFSjB,EAAE6D,OACK2J,QAAQ,cACXA,QAAQ,aACO2S,IAARlf,GAChBqB,KAAKijB,sBAAsBtkB,EAAIsM,cAAc,sBAEjD,MACJ,IAAK,qBAIW,QADZtM,EAFSjB,EAAE6D,OACK2J,QAAQ,cACXA,QAAQ,aACO2S,IAARlf,GAChBqB,KAAKijB,sBAAsBtkB,EAAIsM,cAAc,wBAEjD,MACJ,IAAK,YACD,IAAKjL,KAAK5B,qBAGN,GAFAykB,EAAenlB,EAAE6D,OAAO2hB,cAED,QADvBJ,EAAiB9iB,KAAKmjB,mBAAmBN,IACZ,CACzB,IAAIhZ,EAAWiZ,EAAejZ,SAC9B7J,KAAKojB,UAAUvZ,GACf,IAAIwZ,EAAY3lB,EAAE6D,OAAO8hB,UACrBC,EAAQR,EAAenP,SAAS0P,GACpC/S,YAAUgT,GAAQ,aAClBhT,YAAUgT,GAAQ,gBAGlBtjB,KAAKujB,iBAGb,MACJ,IAAK,UACD,IAAKvjB,KAAK5B,qBAGN,GAFAykB,EAAenlB,EAAE6D,OAAO2hB,cAED,QADvBJ,EAAiB9iB,KAAKwjB,uBAAuBX,IAChB,CACzB,IAAIY,EAASX,EAAejZ,SAC5B7J,KAAKojB,UAAUK,GACf,IAAIC,EAAShmB,EAAE6D,OAAO8hB,UAClBpb,EAAO6a,EAAenP,SAAS+P,GACnCpT,YAAUrI,GAAO,aACjBqI,YAAUrI,GAAO,gBAGjBjI,KAAKujB,oBAO7B3E,EAAS/hB,UAAUsmB,mBAAqB,SAAUQ,GAC9C,IAAIjY,EAAaiY,EAAkBtY,mBAKnC,OAJmB,OAAfK,IAA0E,IAAlDA,EAAWe,UAAUjO,QAAQ,iBACxB,SAA7BkN,EAAWlR,MAAMG,UACjB+Q,EAAa1L,KAAKmjB,mBAAmBzX,IAElCA,GAGXkT,EAAS/hB,UAAU2mB,uBAAyB,SAAUG,GAClD,IAAIjY,EAAaiY,EAAkBC,uBAKnC,OAJmB,OAAflY,IAA0E,IAAlDA,EAAWe,UAAUjO,QAAQ,iBACxB,SAA7BkN,EAAWlR,MAAMG,UACjB+Q,EAAa1L,KAAKwjB,uBAAuB9X,IAEtCA,GAEXkT,EAAS/hB,UAAU6jB,eAAiB,WAChC1gB,KAAK2gB,iBACL3gB,KAAKxC,YACLwC,KAAKzC,cACLyC,KAAK6jB,eACL7jB,KAAK8jB,aAAc,EACnB9jB,KAAK+jB,eAAgB,EACrB/jB,KAAKgkB,YACDC,cAAe,iBACfC,YAAa,eACbC,iBAAkB,qBAClBC,mBAAoB,uBACpBC,UAAW,YACXC,QAAS,WAEbtkB,KAAKib,cAAiBjb,KAAKrJ,sBAAsBC,gBAAgBoJ,KAAKrJ,WAAWA,WAAW4tB,UACnF7sB,oBAAkBsI,KAAKrJ,WAAW+C,QAAWsG,KAAKrJ,WAAWE,mBAAmB2tB,oBACzFxkB,KAAKhF,iBAAmBtD,oBAAkBsI,KAAK/C,kBAQnD2hB,EAAS/hB,UAAU4nB,WAAa,WAC5BC,eAAa7X,IAAI7M,KAAKrI,KAAKkc,QAAS,QAAS7T,KAAK2kB,kBAAmB3kB,MACrE0kB,eAAa7X,IAAI7M,KAAK6T,QAAS,WAAY7T,KAAK2kB,kBAAmB3kB,MACnEA,KAAK4kB,eAAiB,IAAIC,iBAAe7kB,KAAK6T,SAC1CiR,UAAW9kB,KAAK2iB,yBAAyB7G,KAAK9b,MAC9CgkB,WAAYhkB,KAAKgkB,WACjBe,UAAW,YAEX/kB,KAAK4iB,gBACL5iB,KAAK6T,QAAQmR,UAAsC,IAA3BhlB,KAAK6T,QAAQmR,SAAkB,EAAIhlB,KAAK6T,QAAQmR,WAShFpG,EAAS/hB,UAAUooB,gBAAkB,WACjC,IAAIC,KAGJ,OADAllB,KAAKrI,KAAqB,iBAAEqI,KAAKmlB,eAAenlB,KAAK1I,UACjD0I,KAAK4K,YACEsa,GAEXA,EAAQ1sB,MACJ4sB,OAAQ,SAAUliB,MAAOlD,KAAMA,KAAKhI,kBAEnCN,oBAAkBsI,KAAKqlB,UACxBH,EAAQ1sB,MACJ4sB,OAAQ,UACRliB,MAAOlD,QAGXA,KAAKslB,kBACLJ,EAAQ1sB,MACJ4sB,OAAQ,cACRliB,MAAOlD,QAGXA,KAAK+Q,aACLmU,EAAQ1sB,MACJ4sB,OAAQ,QACRliB,MAAOlD,KAAMA,KAAKgR,gBAGtBhR,KAAKI,iBACL8kB,EAAQ1sB,MACJ4sB,OAAQ,UACRliB,MAAOlD,QAGXA,KAAKM,cACL4kB,EAAQ1sB,MACJ4sB,OAAQ,OACRliB,MAAOlD,QAGXA,KAAKgZ,WAAWzhB,OAAS,GACzB2tB,EAAQ1sB,MACJ4sB,OAAQ,UAAWliB,MAAOlD,QAGlCklB,EAAQ1sB,MACJ4sB,OAAQ,SAAUliB,MAAOlD,QAEzBA,KAAKulB,kBACLL,EAAQ1sB,MACJ4sB,OAAQ,cAAeliB,MAAOlD,SAGlCA,KAAK2R,eAAiB3R,KAAKhB,YAAcgB,KAAKf,oBAC9Ce,KAAKrI,KAAK2a,6BAA+BtS,KAAKrI,KAAK4a,+BACnD2S,EAAQ1sB,MACJ4sB,OAAQ,SAAUliB,MAAOlD,QAG7BA,KAAKwlB,gBACLN,EAAQ1sB,MACJ4sB,OAAQ,YAAaliB,MAAOlD,QAGhCA,KAAKylB,gBACLP,EAAQ1sB,MACJ4sB,OAAQ,YAAaliB,MAAOlD,QAGhCA,KAAKK,gBACL6kB,EAAQ1sB,MACJ4sB,OAAQ,aAAcliB,MAAOlD,QAGjCA,KAAK0lB,mBACLR,EAAQ1sB,MACJ4sB,OAAQ,gBAAiBliB,MAAOlD,QAGxCA,KAAK2lB,sBAAsBT,GACpBA,IAEXtG,EAAS/hB,UAAU8oB,sBAAwB,SAAUT,GAC7CllB,KAAKX,qBACL6lB,EAAQ1sB,MACJ4sB,OAAQ,iBACRliB,MAAOlD,SAGXA,KAAKnE,aAAa+pB,aAAe5lB,KAAKnE,aAAagqB,eAAiB7lB,KAAKnE,aAAaoE,eACtFilB,EAAQ1sB,MACJ4sB,OAAQ,OACRliB,MAAOlD,QAGXA,KAAK8lB,gBAAgB9lB,KAAK1I,UAC1B4tB,EAAQ1sB,MACJ4sB,OAAQ,gBACRliB,MAAOlD,QAGXA,KAAK+lB,gBACLb,EAAQ1sB,MACJ4sB,OAAQ,YACRliB,MAAOlD,QAGXA,KAAK5B,sBACL8mB,EAAQ1sB,MACJ4sB,OAAQ,gBACRliB,MAAOlD,QAGXA,KAAK2Z,yBACLuL,EAAQ1sB,MACJ4sB,OAAQ,iBACRliB,MAAOlD,QAGfklB,EAAQ1sB,MACJ4sB,OAAQ,SACRliB,MAAOlD,KAAKrI,SAGpBinB,EAAS/hB,UAAUipB,gBAAkB,SAAUxuB,GAC3C,IAAIiQ,EAAQvH,KACZ,OAAO1I,EAAQ0uB,KAAK,SAAU9Z,GAC1B,OAAIA,EAAI5U,QACGiQ,EAAMue,gBAAgB5Z,EAAI5U,YAE3B4U,EAAI+Z,WAAY/Z,EAAIga,qBAStCtH,EAAS/hB,UAAUspB,aAAe,WAC1BnmB,KAAKrI,MAAQqI,KAAKrI,KAAKkc,SACvB6Q,eAAa0B,OAAOpmB,KAAKrI,KAAKkc,QAAS,QAAS7T,KAAK2kB,oBAY7D/F,EAAS/hB,UAAUmG,IAAM,SAAUC,EAAOC,GAClClD,KAAKqmB,cACLrmB,KAAKqmB,aAAaniB,QAAQjB,EAAOC,EAAMlD,OAS/C4e,EAAS/hB,UAAUypB,OAAS,WACxB,IAAI/e,EAAQvH,KACRA,KAAKgU,UACLhU,KAAKrI,KAAKqc,SAAU,EACpBhU,KAAKrI,KAAKoc,YAEV/T,KAAKumB,QACLvmB,KAAKrI,KAAK4uB,OAAQ,GAEtBC,iBAAgBjlB,OAAQvB,KAAK6T,SAAW7T,KAAKwM,eAC7CxM,KAAKgD,KAAK,2BACVhD,KAAKT,aAAe,IAAImR,GAAO1Q,MAC/BA,KAAKymB,WAAa,IAAIvS,GAAiBlU,MACvCA,KAAK0iB,YAAc,IAAI7S,GAAM7P,MAC7BA,KAAKoJ,Qd1jBK,Qc2jBVpJ,KAAK0mB,sBACL1mB,KAAK/G,eAAgB,EAChBvB,oBAAkBsI,KAAKrJ,aACxBqJ,KAAK2mB,gBAAgB3mB,KAAKrJ,YAE9BqJ,KAAK4mB,WACD5mB,KAAK6T,QAAQtL,UAAUC,SAAS,eAAiBxI,KAAK6mB,gBAAgBC,WACtE9mB,KAAKrI,KAAKkvB,gBAAgBC,UAAY,gBAE1C9mB,KAAK+mB,cACL,IAAIC,EAAgBxa,gBAAc,OAASsH,GAAI9T,KAAK6T,QAAQC,GAAK,iBACjExD,YAAUtQ,KAAK6T,SAAU,cACpBnc,oBAAkBsI,KAAKinB,SAAoC,iBAAjBjnB,KAAW,SAAgD,IAA9BA,KAAKinB,OAAOzoB,QAAQ,OAC5FwB,KAAK6T,QAAQrZ,MAAMysB,OAASjnB,KAAKinB,QAEhCvvB,oBAAkBsI,KAAKqN,QAAkC,iBAAhBrN,KAAU,QAA+C,IAA7BA,KAAKqN,MAAM7O,QAAQ,OACzFwB,KAAK6T,QAAQrZ,MAAM6S,MAAQrN,KAAKqN,OAEpCrN,KAAK6T,QAAQhG,YAAYmZ,GACzB,IAAIE,EAAsBlnB,KAAKrI,KAAKstB,gBACpCjlB,KAAKrI,KAAKstB,gBAAkB,WACxB,IAAIC,KACJA,EAAUgC,EAAoBhlB,MAAMlC,MACpC,IAAK,IAAI3I,EAAI,EAAGA,EAAI6tB,EAAQ3tB,OAAQF,IACN,kBAAtB6tB,EAAQ7tB,GAAG+tB,SACXF,EAAQ7tB,GAAG+tB,OAAS,qBAG5B,OAAOF,GAEXllB,KAAKrI,KAAKwvB,SAASH,GACnBhnB,KAAKykB,aACLzkB,KAAKonB,iBACL,IACIC,EAAoBrnB,KAAKrI,KAAoB,gBAEjDqI,KAAKrI,KAAoB,gBAAI,SAAUuL,EAAMhJ,GACzCmtB,EAAkBnlB,MAAMqF,EAAM5P,MAExB4P,EAAMyM,SAAWtc,oBAAkB6P,EAAa,UAClDA,EAAM+f,cAAcpkB,EAAMhJ,KAItC0kB,EAAS/hB,UAAU0qB,gBAAkB,WAC5B7vB,oBAAkBsI,KAAKrI,KAAK+I,kBAC7BV,KAAKrI,KAAK+I,gBAAgBqJ,UAE9B/J,KAAKU,gBAAkBV,KAAKrI,KAAK+I,gBAAkB,IAAI4G,GAActH,OAEzE4e,EAAS/hB,UAAU8pB,gBAAkB,SAAUloB,GAC3C,IAAI8I,EAAQvH,KAIZ,GAHI7I,EAAgB6I,QAChBvB,EAAOJ,WAAS,SAAUI,IAE1BA,aAAgB/B,OAAS+B,EAAKlH,OAAS,GAAKc,OAAOwE,UAAUC,eAAeC,KAAK0B,EAAK,GAAI,SAC1FuB,KAAKxC,SAAWiB,EAChBuB,KAAKxC,SAASC,OAAO,SAAUC,GAC3B0Y,WAAS,sBAAwB1Y,EAAE1E,SAAU0E,EAAG6J,GAChC,IAAZ7J,EAAEvD,OACFoN,EAAMhK,WAAW/E,KAAKkF,UAK9B,GAAIvG,EAAgB6I,MAAO,CACvB,IAAIwnB,EAAWnpB,WAAS,SAAU2B,KAAKrJ,YACvCqJ,KAAKymB,WAAWvR,kBAAkBsS,QAGlCxnB,KAAKymB,WAAWvR,kBAAkBzW,IAa9CmgB,EAAS/hB,UAAU4qB,mBAAqB,WACpCznB,KAAK0nB,mBACL1nB,KAAKrI,KAAKgwB,UAAY3nB,KAAK2nB,UAC3B3nB,KAAKrI,KAAKirB,cAAgB5iB,KAAK4iB,cAC/B5iB,KAAKrI,KAAKL,QAAU0I,KAAKmlB,eAAenlB,KAAK1I,SAC7C0I,KAAKrI,KAAK4tB,iBAAmBvlB,KAAKulB,iBAClCvlB,KAAKrI,KAAK8tB,eAAiBzlB,KAAKylB,eAChCzlB,KAAKrI,KAAKwd,MAAQnV,KAAKmV,MACvBnV,KAAKrI,KAAKiwB,gBAAkB5nB,KAAK4nB,gBACjC5nB,KAAKrI,KAAKoZ,YAAc/Q,KAAK+Q,YAC7B/Q,KAAKrI,KAAKqZ,aAAe6W,sBAAoB7nB,KAAKgR,cAClDhR,KAAKrI,KAAKmwB,cAAgB9nB,KAAK8nB,cAC/B9nB,KAAKrI,KAAK0I,eAAiBL,KAAKK,eAChCL,KAAKrI,KAAK2I,aAAeN,KAAKM,aAC9BN,KAAKrI,KAAKI,eAAiBiI,KAAKjI,eAChCiI,KAAKrI,KAAKyG,qBAAuB4B,KAAK5B,qBACtC4B,KAAKrI,KAAKia,2BAA6B5R,KAAK4R,2BAC5C5R,KAAKrI,KAAKgiB,wBAA0B3Z,KAAK2Z,wBACzC3Z,KAAKrI,KAAKowB,uBAAyB/nB,KAAK+nB,uBACxC/nB,KAAKrI,KAAK0V,MAAQrN,KAAKqN,MACvBrN,KAAKrI,KAAKsvB,OAASjnB,KAAKinB,OACxBjnB,KAAKrI,KAAKqwB,aAAehoB,KAAKgoB,aAC9BhoB,KAAKrI,KAAKyI,gBAAkBJ,KAAKI,gBACjCJ,KAAKrI,KAAKyV,cAAgBpN,KAAKoN,cAC/BpN,KAAKrI,KAAK4I,cAAgBP,KAAKO,cAC/BP,KAAKrI,KAAKswB,YAAcjoB,KAAKioB,YAC7BjoB,KAAKrI,KAAKuwB,eAAiBloB,KAAKkoB,eAChCloB,KAAKrI,KAAKwwB,iBAAmBnoB,KAAKmoB,iBAClCnoB,KAAKrI,KAAK2H,oBAAsBU,KAAKV,oBACrCU,KAAKrI,KAAK0H,oBAAsBW,KAAKX,oBACrCW,KAAKrI,KAAKkvB,gBAAkBgB,sBAAoB7nB,KAAK6mB,iBACrD7mB,KAAKrI,KAAKywB,UAAYpoB,KAAKooB,UAC3BpoB,KAAKrI,KAAK0wB,UAAYroB,KAAKqoB,UAC3BroB,KAAKrI,KAAKouB,eAAiB/lB,KAAK+lB,eAChC/lB,KAAKrI,KAAK0tB,QAAUwC,sBAAoB7nB,KAAKsoB,kBAC7CtoB,KAAKrI,KAAK4wB,gBAAkBvoB,KAAKuoB,gBACjCvoB,KAAKrI,KAAK+tB,kBAAoB1lB,KAAK0lB,kBACnC1lB,KAAKrI,KAAKK,eAAiB6vB,sBAAoB7nB,KAAKhI,gBACpDgI,KAAKrI,KAAKuQ,kBAAoB2f,sBAAoB7nB,KAAKkI,mBACvDlI,KAAKrI,KAAK4G,aAAespB,sBAAoB7nB,KAAKzB,cAClDyB,KAAKrI,KAAKC,eAAiBiwB,sBAAoB7nB,KAAKpI,gBACpDoI,KAAKrI,KAAKqhB,WAAa6O,sBAAoB7nB,KAAKgZ,YAChDhZ,KAAKrI,KAAK6wB,iBAAmBX,sBAAoB7nB,KAAKwoB,kBACtDxoB,KAAKrI,KAAKykB,UAAYyL,sBAAoB7nB,KAAKoc,WAC/Cpc,KAAKrI,KAAK2pB,OAASuG,sBAAoB7nB,KAAKshB,QAC5CthB,KAAKrI,KAAK8wB,iBAAmBzoB,KAAKyoB,iBAClCzoB,KAAKrI,KAAK2tB,iBAAmBuC,sBAAoB7nB,KAAK0oB,kBACtD1oB,KAAKrI,KAAKgxB,gBAAkBd,sBAAoB7nB,KAAK2oB,iBACrD3oB,KAAKrI,KAAKkE,aAAemE,KAAK4oB,sBAC9B5oB,KAAKrI,KAAKwb,YAAc0U,sBAAoB7nB,KAAKmT,aACjDnT,KAAKrI,KAAK6tB,eAAiBqC,sBAAoB7nB,KAAKwlB,gBACpDxlB,KAAKrI,KAAKqH,WAAagB,KAAKhB,WAC5BgB,KAAKrI,KAAKga,cAAgB3R,KAAK2R,cAC/B3R,KAAKrI,KAAKkxB,SAAWhB,sBAAoB7nB,KAAK6oB,UAC9C,IAAIC,EAAmB,yBACvB9oB,KAAKrI,KAAKmxB,GAAoB9oB,KAAK8oB,GAEnC9oB,KAAKrI,KAAkB,eAAI,GAE/BinB,EAAS/hB,UAAUksB,cAAgB,SAAU7lB,GACzClD,KAAKoJ,QAAQ7Q,YAAU,OAAQ2K,GAAOA,IAE1C0b,EAAS/hB,UAAUmsB,eAAiB,WAChC,IAAIzhB,EAAQvH,KACZA,KAAKrI,KAAKsxB,aAAe,SAAU/lB,GAC1BxL,oBAAkBwL,EAAK3B,WAAY2B,EAAK3B,OAAOgH,UAAUC,SAAS,qBAChEtF,EAAK3B,OAAOgH,UAAUC,SAAS,uBAAyBtF,EAAK3B,OAAOgH,UAAUC,SAAS,kBAI9FjB,EAAM6B,QdpsBQ,ecosBqBlG,GAH/BA,EAAKiG,QAAS,GAKtBnJ,KAAKrI,KAAKmN,YAAc,SAAU5B,GAC9B,GAAIqE,EAAMnJ,sBAAwB8E,EAAKgmB,yBACnC3hB,EAAM5P,KAAKghB,gBAAgBphB,SAAWgQ,EAAM5P,KAAKwxB,gBAAgBC,mBAAmB7xB,OAEpF,IAAK,IAAIF,EAAI,EAAGA,EAAIkQ,EAAM1I,UAAUtH,OAAQF,IACpCkQ,EAAM1I,UAAUxH,GAAG0gB,uBAAuB,6BAA6BxgB,QACvEgQ,EAAM5P,KAAKwxB,gBAAkC,mBAAE5hB,EAAM1I,UAAUxH,GAAIkQ,EAAMpL,wBAAwB9E,GAAG6C,OAIhHqN,EAAMkhB,iBAAmBlhB,EAAM5P,KAAK8wB,iBACpClhB,EAAMwL,OAAOsW,EAAoBnmB,GACjCqE,EAAM6B,QAAQigB,EAAoBnmB,IAEtClD,KAAKrI,KAAKqN,cAAgB,SAAU9B,GAChCqE,EAAMkhB,iBAAmBlhB,EAAM5P,KAAK8wB,iBACpClhB,EAAM6B,QAAQkgB,EAAsBpmB,IAExClD,KAAKrI,KAAK4xB,WAAa,SAAUrmB,GAC7BqE,EAAM2a,oBACN3a,EAAM6B,Qd5sBM,ac4sBqBlG,IAErClD,KAAKrI,KAAK6xB,mBAAqB,SAAUtmB,GACrCqE,EAAMwL,OAAO,gBAAiB7P,GAC9BA,EAAOqE,EAAMmN,aAEjB1U,KAAKrI,KAAK8xB,iBAAmB,SAAUvmB,GACnCqE,EAAMwL,OAAO,cAAe7P,GAC5BA,EAAOqE,EAAMmN,aAEjB1U,KAAKrI,KAAK+xB,eAAiB,SAAUxmB,GACjCqE,EAAM6B,QAAQ0C,EAAuB5I,IAEzClD,KAAKrI,KAAKgyB,kBAAoB3pB,KAAK+oB,cAAcjN,KAAK9b,MACtDA,KAAKrI,KAAKiyB,oBAAsB5pB,KAAK+oB,cAAcjN,KAAK9b,MACxDA,KAAKrI,KAAKkyB,yBAA2B7pB,KAAK+oB,cAAcjN,KAAK9b,MAC7DA,KAAKrI,KAAKmyB,uBAAyB9pB,KAAK+oB,cAAcjN,KAAK9b,MAC3DA,KAAKrI,KAAKoyB,kBAAoB/pB,KAAK+oB,cAAcjN,KAAK9b,MACtDA,KAAKrI,KAAKmO,kBAAoB9F,KAAK+oB,cAAcjN,KAAK9b,MACtDA,KAAKrI,KAAKqyB,eAAiBhqB,KAAK+oB,cAAcjN,KAAK9b,MACnDA,KAAKrI,KAAKsyB,eAAiBjqB,KAAK+oB,cAAcjN,KAAK9b,MACnDA,KAAKrI,KAAKuyB,gBAAkBlqB,KAAK+oB,cAAcjN,KAAK9b,MACpDA,KAAKrI,KAAKwyB,eAAiBnqB,KAAK+oB,cAAcjN,KAAK9b,MACnDA,KAAKrI,KAAKyyB,gBAAkBpqB,KAAK+oB,cAAcjN,KAAK9b,MACpDA,KAAKrI,KAAK0yB,aAAerqB,KAAK+oB,cAAcjN,KAAK9b,MACjDA,KAAKrI,KAAK2yB,eAAiBtqB,KAAK+oB,cAAcjN,KAAK9b,MACnDA,KAAKrI,KAAK4yB,YAAcvqB,KAAK+oB,cAAcjN,KAAK9b,MAChDA,KAAKrI,KAAK6yB,SAAWxqB,KAAK+oB,cAAcjN,KAAK9b,MAC7CA,KAAKrI,KAAK8yB,WAAazqB,KAAK+oB,cAAcjN,KAAK9b,MAC/CA,KAAKrI,KAAK+yB,gBAAkB1qB,KAAK+oB,cAAcjN,KAAK9b,MACpDA,KAAKrI,KAAKgzB,WAAa3qB,KAAK+oB,cAAcjN,KAAK9b,MAC/CA,KAAKrI,KAAKizB,YAAc5qB,KAAK+oB,cAAcjN,KAAK9b,MAChDA,KAAKrI,KAAKkzB,WAAa7qB,KAAK+oB,cAAcjN,KAAK9b,MAC/CA,KAAKrI,KAAKmzB,YAAc,SAAU5nB,GAG9B,IAFA,IAAI+E,EAAOV,EAAM1I,UAEVoJ,EAAK/E,EAAa,UAAGqF,UAAUC,SAAS,iBAC3CtF,EAAa,WAEjBqE,EAAM6B,Qd3tBO,cc2tBqBlG,IAEtClD,KAAKrI,KAAK8qB,KAAO,WAEb,GADAlb,EAAM5P,KAAK2S,GAAG,cAAe/C,EAAMggB,gBAAiBhgB,IAC/C7P,oBAAkB6P,EAAM8e,cAAe,CAExC9e,EAAM8e,aAAe9e,EAAM5P,KAAiB,aAAI,IAAIozB,EAAWxjB,EAAM5P,QAG7EqI,KAAKrI,KAAKqzB,cAAgBhrB,KAAK+oB,cAAcjN,KAAK9b,MAClDA,KAAKrI,KAAKszB,cAAgBjrB,KAAK+oB,cAAcjN,KAAK9b,MAClDA,KAAKkrB,6BACLlrB,KAAKmrB,qBACLnrB,KAAKorB,2BACLprB,KAAKqrB,yBACLrrB,KAAKsrB,qBACLtrB,KAAKurB,sBAET3M,EAAS/hB,UAAU2uB,cAAgB,SAAUC,EAAYC,GACrD,IAAK,IAAI3xB,EAAI,EAAGA,EAAI0xB,EAAW/rB,MAAMnI,OAAQwC,IACrC2xB,EACApb,YAAUmb,EAAW/rB,MAAM3F,IAAK,iBAGhCwT,eAAake,EAAW/rB,MAAM3F,IAAK,kBAI/C6kB,EAAS/hB,UAAU8uB,cAAgB,WAC/B,MAAoB,SAAhB3rB,KAAKinB,SAA8D,IAAzCjnB,KAAKinB,OAAOlf,WAAWvJ,QAAQ,MAOjEogB,EAAS/hB,UAAUquB,2BAA6B,WAC5C,IAAI3jB,EAAQvH,KACZA,KAAKrI,KAAKi0B,UAAY,SAAU1oB,GAK5B,GAJAqE,EAAMskB,oBACNtkB,EAAM2a,oBACN3a,EAAMukB,aAAavkB,EAAM1I,WACzB0I,EAAMwL,OAAO,eAAgB7P,GACzBzM,EAAa8Q,KAAW/N,EAAU+N,KAAWA,EAAMmO,gBAAiB,CACpE,IAAIqW,EAAMxzB,YAAU,sBAAuBgP,GAAO9J,OAAO,SAAUC,GAC/D,MAAoC,OAA7BA,EAAEwY,YAAYC,aACtB5e,OACH6e,WAAS,gCAAiC2V,EAAM,GAAIxkB,GAExD,GAAIA,EAAMokB,iBAAmBpkB,EAAMtO,cAG/B,IAAK,IAFDgP,EAAOV,EAAMqQ,kBAAkB3P,KAC/B+jB,KAAevjB,MAAM1L,KAAKkL,GACrB5Q,EAAI20B,EAAUz0B,OAAS,EAAGF,EAAI,EAAGA,IACtC,IAAKiD,EAAS0xB,EAAU30B,IAAK,CACrB20B,EAAU30B,GAAGgU,oBACb9D,EAAMikB,cAAcQ,EAAU30B,IAAI,GAEtC,MAKZ,GAAIkQ,EAAMnJ,sBAAwBmJ,EAAMW,kBAAkB+jB,mBAAmD,WAA9B1kB,EAAMmN,YAAkB,QAAgD,aAA9BnN,EAAMmN,YAAkB,QAAmB,CAGhK,GADAnN,EAAM5P,KAAKwxB,gBAAuC,0BACR,WAAtC5hB,EAAM5P,KAAKuQ,kBAAkB/E,KAAmB,CAChD,IACIjJ,EAAQqN,EAAMpL,wBAAwBqC,QAAQ+I,EAAM5P,KAAKwxB,gBAAsB,MACnF5hB,EAAM5P,KAAKwxB,gBAAkC,mBAAE5hB,EAAM1I,UAAU3E,GAAQA,IAG/EqN,EAAM6B,Qdp1BK,Yco1BqBlG,GAChCqE,EAAMtO,eAAgB,GAG1B,IAAIkL,EAAWnE,KACfA,KAAKrI,KAAKgN,gBAAkB,SAAUzB,GAClC,IACIrD,EAActH,YAAU,SAAU2K,GACtC,IAAMzM,EAAa0N,KAAc3K,EAAU2K,IAAchN,EAAgB6I,QAA0B,SAAhBH,EAC/EsE,EAAS4O,OAAO,oBAAqB7P,GACrCA,EAAQiB,EAAoB,iBAE3B,GAAiC,IAA7BA,EAAS3G,SAASjG,QAAgBiC,EAAU2K,IAAaA,EAASxN,sBAAsBC,cAAa,CAC1G,IAAI6C,EAAK0K,EAASxN,WAClBwN,EAASsiB,WAAWvR,kBAAkBzb,EAAG9C,WAAW8E,MACpDyH,EAAK+Q,OAAS9P,EAASxM,KAAKhB,WAAqB,WAAE8E,KAAO0I,EAAS3G,SAiBvE,GAfK/G,EAAa0N,IAAchN,EAAgB6I,OAAUtI,oBAAkByM,EAASxN,cAC7EqJ,KAAK2a,YACLvE,WAAS,cAAc,EAAMlT,GAEjCiB,EAAS4O,OAAO,gBAAiB7P,IAGrC9G,SAAO8G,EAAMiB,EAASuQ,aAClBvQ,EAAS7E,sBACT4D,EAAK+Q,OAAS/Q,EAAK+Q,OAAOxL,SAE1BtE,EAASlL,gBACT+G,KAAK6Z,cAAcoF,sBAAwB9a,EAAS8a,wBAGnDjf,KAAK2a,WAAY,CAClB,IAAIuR,EAAoB,IAAIC,WAI5B,OAHAhoB,EAASiF,QAAQiH,EAAwBnN,EAAM,SAAUkpB,GACrDF,EAAkBG,QAAQD,KAEvBF,IAGflsB,KAAKrI,KAAKqL,IAAM,SAAUG,EAAMD,GACxBqE,EAAM8e,cACN9e,EAAM8e,aAAarjB,IAAIG,EAAMD,KAIzC0b,EAAS/hB,UAAU0uB,mBAAqB,WACpC,IAAIhkB,EAAQvH,KACZA,KAAKrI,KAAKsN,aAAe,SAAU/B,GAC/B,KAAKA,EAAKE,KAAK0Q,KAAOvM,EAAM5P,KAAKkc,QAAQC,GAAK,iBAA6C,IAA3BvM,EAAMge,kBACjEriB,EAAKE,KAAK0Q,KAAOvM,EAAM5P,KAAKkc,QAAQC,GAAK,eAAyC,IAAzBvM,EAAMke,gBAC/DviB,EAAKE,KAAK0Q,KAAOvM,EAAM5P,KAAKkc,QAAQC,GAAK,eAA2C,IAA3BvM,EAAMge,kBAFpE,CAKA,IAAI+G,EAAkB,IAAIH,WAO1B,OANA5kB,EAAM6B,QAAQmjB,EAAqBrpB,EAAM,SAAUspB,GAC1CA,EAAYrjB,QACb5B,EAAMwL,OAAOwZ,EAAqBrpB,GAEtCopB,EAAgBD,QAAQG,KAErBF,IAEXtsB,KAAKrI,KAAK80B,cAAgB,SAAUvpB,GAChC,IAAIopB,EAAkB,IAAIH,WAI1B,OAHA5kB,EAAM6B,QAAQ7Q,YAAU,OAAQ2K,GAAOA,EAAM,SAAUwpB,GACnDJ,EAAgBD,QAAQK,KAErBJ,GAEXtsB,KAAKrI,KAAKiO,UAAY,SAAU1C,GAC5B,GAAKxL,oBAAkBwL,EAAKvE,OAAQuE,EAAKvE,IAAI4J,UAAUC,SAAS,gBAAhE,CAIA,IAAI8jB,EAAkB,IAAIH,WAI1B,OAHA5kB,EAAM6B,QAAQujB,GAAkBzpB,EAAM,SAAU0pB,GAC5CN,EAAgBD,QAAQO,KAErBN,EAPHppB,EAAKiG,QAAS,IAU1ByV,EAAS/hB,UAAUwuB,uBAAyB,WACxC,IAAI9jB,EAAQvH,KACZA,KAAKrI,KAAKoM,gBAAkB,SAAUb,GAC9BqE,EAAMslB,iBACNtlB,EAAMslB,iBAAkB,EACxBtlB,EAAM5P,KAAKhB,YAAesd,OAAQ1M,EAAM/J,SAAU+Q,MAAOlQ,WAAS,QAASkJ,EAAM5P,KAAKhB,cAGtF4Q,EAAM6B,QAAQ0jB,EAAwB5pB,IAG9ClD,KAAKrI,KAAKoO,SAAW,SAAU7C,GAC3B,GAAIqE,EAAM5P,KAAKo1B,oBAAqB,CAChC,IAAIC,EAAezlB,EAAM5P,KAAKs1B,kBAAkBC,YAAYrZ,QAAQkE,uBAAuB,cAAc,IACpGrgB,oBAAkBs1B,IAAiBA,EAAalZ,KAAOvM,EAAMsM,QAAQC,GAAK,6BAC3E5Q,EAAKiG,QAAS,GAGtB,IAAImjB,EAAkB,IAAIH,WAO1B,OANA5kB,EAAM6B,QAAQ+jB,GAAiBjqB,EAAM,SAAUkqB,GACtCA,EAAajkB,QACd5B,EAAMwL,OAAOoa,GAAiBC,GAElCd,EAAgBD,QAAQe,KAErBd,GAEXtsB,KAAKrI,KAAKqO,UAAY,SAAU9C,GAC5BqE,EAAM6B,QAAQikB,GAAkBnqB,GAChCqE,EAAMwL,OAAOsa,GAAkBnqB,IAEnClD,KAAKrI,KAAKsO,SAAW,SAAU/C,GAC3B,IACIoqB,EAAU,IAAInB,WAGlB,OAFAjpB,EAAS,QAAIoqB,EACb/lB,EAAMwL,OAAOwa,GAAiBrqB,GACvBoqB,GAEXttB,KAAKrI,KAAKyO,SAAW,SAAUlD,GAC3BqE,EAAM6B,QAAQokB,GAAiBtqB,GAC/BqE,EAAMwL,OAAOya,GAAiBtqB,IAElClD,KAAKrI,KAAK4O,gBAAkB,SAAUrD,GAClCqE,EAAM6B,QAAQqkB,GAAwBvqB,GACtCqE,EAAMwL,OAAO0a,GAAwBvqB,IAEzClD,KAAKrI,KAAK2O,eAAiB,SAAUpD,GACjCqE,EAAM6B,QAAQskB,GAAuBxqB,GACrCqE,EAAMwL,OAAO2a,GAAuBxqB,IAExClD,KAAKrI,KAAKuO,YAAc,SAAUhD,GAC9BqE,EAAM6B,QAAQukB,GAAoBzqB,GAClCqE,EAAMwL,OAAO4a,GAAoBzqB,IAErClD,KAAKrI,KAAK0O,kBAAoB,SAAUnD,GACpCqE,EAAM6B,QAAQwkB,GAA0B1qB,GACxCqE,EAAMwL,OAAO6a,GAA0B1qB,IAE3ClD,KAAKrI,KAAKwO,YAAc,SAAUjD,GACE,SAA5BqE,EAAM1L,aAAaC,MACnByL,EAAM6B,QAAQykB,GAAoB3qB,GAEtCqE,EAAMwL,OAAO8a,GAAoB3qB,KAGzC0b,EAAS/hB,UAAUgvB,kBAAoB,WACnC7rB,KAAK8tB,yBAETlP,EAAS/hB,UAAU6qB,iBAAmB,WAClC,IAAI/wB,EAAa,aAIjB,GAAIqJ,KAAKrJ,YAAcQ,EAAgB6I,MAAO,CAC1C,IAAIvB,EAAOuB,KAAKxC,SACZuwB,EAAY1vB,WAAS,QAAS2B,KAAKrJ,YACvCqJ,KAAKrI,KAAKhB,YAAesd,OAAQxV,EAAM8P,MAAOwf,QAG9C/tB,KAAKrI,KAAKhB,WAAeqJ,KAAKrJ,sBAAsBC,cAChC,IAAIA,cAAYoJ,KAAKrJ,WAAWA,WAAYqJ,KAAKrJ,WAAWq3B,aAAchuB,KAAKrJ,WAAWE,SAA1GmJ,KAAKxC,SAEb,GAAIwC,KAAKrJ,sBAAsBC,gBAAgBoJ,KAAKrJ,WAAWA,WAAW4tB,SAAWvkB,KAAKrJ,WAAW+C,OAAQ,CACzGsG,KAAKrI,KAAKhB,WAAWA,GAAY8E,KAAO9B,EAAYqG,KAAKrJ,WAAWA,GAAY8E,MAChFuE,KAAKrI,KAAKhB,WAAgB,MAAIqJ,KAAKrJ,WAAW+C,MAE9C,IAAIyX,EAAUnR,KACTtI,oBAAkBsI,KAAKrI,KAAKhB,WAAgB,QAC7CqJ,KAAKrI,KAAKhB,WAAgB,MAAEof,KAAK,SAAUrY,GACvC,IAAIjE,EAAK0X,EAAQxZ,KAAKhB,WACtB8C,EAAG9C,GAAY4tB,SAAU,EACzB9qB,EAAkB,iBAAI,EACtBA,EAAG9C,GAAY8E,KAAOiC,EAAEuW,OACxBxa,EAAU,QAAI,IAAIw0B,kBAKlCrP,EAAS/hB,UAAUuuB,yBAA2B,WAC1C,IAAI7jB,EAAQvH,KACZA,KAAKrI,KAAKiN,YAAc,SAAU1B,GACL,YAArBA,EAAKrD,aAA6BqD,EAAK3B,QAAU2B,EAAK3B,OAAO2hB,eAC7DhgB,EAAK3B,OAAO2hB,cAAc3a,UAAUC,SAAS,yBAC7CtF,EAAKiG,QAAS,GAGE,YADF5Q,YAAU,cAAe2K,IAEvCqE,EAAMwL,OAAO,qBAEjBxL,EAAMwL,OAAO,eAAiBlY,WAAYqI,IACrCzM,EAAa8Q,IAAW7P,oBAAkB6P,EAAM6G,eAAkBjX,EAAgBoQ,IAClC,IAA7CA,EAAM5P,KAAKK,eAAeV,QAAQC,QAAyD,IAAzCgQ,EAAM5P,KAAKC,eAAeC,IAAIN,SACpFgQ,EAAMwL,OAAO,gBAAkBvV,SAAU+J,EAAM5P,KAAKhB,aACpD4Q,EAAM5P,KAAK8I,eAAgB9J,WAAY4Q,EAAMmN,YAAYT,SAAU,GAC/Dvc,oBAAkB6P,EAAM5P,KAAwB,kBAAEhB,cAClD4Q,EAAM5P,KAAK4H,aAAad,KAAKyvB,YAAc3mB,EAAM5P,KAAKhB,sBAAsBC,cACxE2Q,EAAM5P,KAAKhB,WACVe,oBAAkB6P,EAAM5P,KAAKhB,YAAc,IAAIC,cAAgB,IAAIA,cAAY2Q,EAAM5P,KAAKhB,YAC/F4Q,EAAM5P,KAAK4H,aAAad,KAAK0vB,wBAAyB,EACtD5mB,EAAM5P,KAAKwd,MAAQ5N,EAAM5P,KAAKwd,iBAAiBC,QAAQ7N,EAAM5P,KAAKwd,MAAQ,IAAIC,UAGtF,IAAIkX,EAAkB,IAAIH,WAO1B,OANA5kB,EAAM6B,QAAQglB,EAAoBlrB,EAAM,SAAU0X,GACzCA,EAAWzR,QACZ5B,EAAMwL,OAAO4Z,GAAkB/R,GAEnC0R,EAAgBD,QAAQzR,KAErB0R,GAEXtsB,KAAKrI,KAAKkN,eAAiB,SAAU3B,GACjCqE,EAAMwL,OAAO,iBAAkB7P,GAC/BqE,EAAM2a,oBACN3a,EAAM8mB,sBACmB,YAArBnrB,EAAKrD,aACL0H,EAAMwL,OAAO,qBAEjBxL,EAAMwL,OAAO,kBAAoBlY,WAAYqI,IACpB,QAArBA,EAAKrD,aAAgE,QAAtC0H,EAAM1L,aAAaQ,gBAAkE,WAAtCkL,EAAM1L,aAAaQ,gBACjGkL,EAAMwL,OAAOub,GAAiBprB,GAET,cAArBA,EAAKrD,aACL0H,EAAMwL,OAAO4J,GAAkBzZ,GAEnCqE,EAAMwL,OAAO,oBAAqB7P,GACT,SAArBA,EAAKrD,aAA0B0H,EAAMyR,WAAW7a,IAAI,SAAUowB,GAAM,OAA+B,IAAxBA,EAAGC,mBAA8Bj3B,QAC5GgQ,EAAM5P,KAAK82B,UAEflnB,EAAM6B,QAAQ2P,EAAuB7V,KAG7C0b,EAAS/hB,UAAUsuB,mBAAqB,WACpC,IAAI5jB,EAAQvH,KAERmE,EAAWnE,KACfA,KAAKrI,KAAKmO,kBAAoB,SAAU5C,GACpCqE,EAAM6B,QAAQslB,GAA0BxrB,GACxCqE,EAAMwL,OAAO2b,GAA0BxrB,IAE3ClD,KAAKrI,KAAKqP,gBAAkB,SAAU9D,GAClCqE,EAAMwL,OAAO,kBAAmB7P,GAChCqE,EAAM6B,QAAQulB,GAAwBzrB,IAE1ClD,KAAKrI,KAAK8M,aAAe,SAAUvB,GAC3BxL,oBAAkBsI,KAAK2a,YACvBvE,WAAS,cAAc,EAAOlT,GAG9BkT,WAAS,aAAcpW,KAAK2a,WAAYzX,GAE5CiB,EAAS5E,aAAauR,YAAY5N,IAEtClD,KAAKrI,KAAK+M,cAAgB,SAAUxB,GAC5BxL,oBAAkBsI,KAAK2a,YACvBvE,WAAS,cAAc,EAAOlT,GAG9BkT,WAAS,aAAcpW,KAAK2a,WAAYzX,GAE5CiB,EAAS5E,aAAaC,WAAW0D,IAErClD,KAAKrI,KAAK+N,iBAAmB,SAAUxC,GACnCqE,EAAMwL,OAAO6b,GAAyB1rB,GACtCqE,EAAM6B,QAAQwlB,GAAyB1rB,IAE3ClD,KAAKrI,KAAK8N,gBAAkB,SAAUvC,GAClCqE,EAAMwL,OAAO8b,EAAwB3rB,GACrCqE,EAAM6B,QAAQylB,EAAwB3rB,IAE1ClD,KAAKrI,KAAK+M,cAAgB,SAAUxB,GAChCqE,EAAMhI,aAAaC,WAAW0D,KAGtC0b,EAAS/hB,UAAUyuB,mBAAqB,WACpC,IAAI/jB,EAAQvH,KACZA,KAAKrI,KAAKsP,mBAAqB,SAAU/D,GACrCqE,EAAM6B,QAAQ0lB,GAA2B5rB,IAE7ClD,KAAKrI,KAAKo3B,aAAe,SAAU7rB,GAC/BqE,EAAM6B,Qd9/BQ,ec8/BqBlG,IAEvClD,KAAKrI,KAAKq3B,QAAU,SAAU9rB,GACtBqE,EAAM5P,KAAKs3B,OACX/rB,EAAKiG,QAAS,GAGlB5B,EAAMwL,OAAOmc,GAAmBhsB,GAChCqE,EAAM6B,Qd5gCG,Uc4gCqBlG,KAElClD,KAAKrI,KAAKw3B,QAAU,SAAUjsB,GACtBqE,EAAM5P,KAAKs3B,OACX/rB,EAAKiG,QAAS,GAGlB5B,EAAMwL,OAAOqc,GAAmBlsB,GAChCA,EAAKiG,QAAS,KAStByV,EAAS/hB,UAAU+pB,SAAW,WAC1B5mB,KAAKynB,qBACLznB,KAAKgpB,iBACL5S,WAAS,qBAAsBpW,KAAKqvB,mBAAoBrvB,KAAKrI,MAE7Dye,WAAS,mBAAoBpW,KAAQ,iBAAGA,KAAKrI,OAQjDinB,EAAS/hB,UAAU6pB,oBAAsB,WACrC,IAAK1mB,KAAK1I,QAAQC,SAAYyI,KAAKymB,WAAWxR,YAAc5c,OAAOC,KAAK0H,KAAKrJ,YAAYY,OAAS,CAC9FyI,KAAK1I,WAOL,IAAK,IAHDoB,EAASsH,KAAKrJ,WAAW,GAEzB2B,EAAOD,OAAOC,KAAKI,GACdrB,EAAI,EAAGA,EAAIiB,EAAKf,OAAQF,KACuC,KAA/D2I,KAAK5C,aAAc4C,KAAK/C,iBAAiBuB,QAAQlG,EAAKjB,KACvD2I,KAAK1I,QAAQkB,KAAKF,EAAKjB,MAKvCunB,EAAS/hB,UAAU+rB,oBAAsB,WACrC,IAAI1oB,KAaJ,OAXAA,EAAK0lB,YAAc5lB,KAAKnE,aAAa+pB,YACrC1lB,EAAKD,aAAeD,KAAKnE,aAAaoE,aACtCC,EAAK2lB,cAAgB7lB,KAAKnE,aAAagqB,cACvC3lB,EAAK7D,eAAsD,WAArC2D,KAAKnE,aAAaQ,eAA8B,SAAW,MACjF6D,EAAKovB,oBAAsBtvB,KAAKnE,aAAayzB,oBAC7CpvB,EAAKqvB,kBAAoBvvB,KAAKnE,aAAa0zB,kBAC3CrvB,EAAKqT,SAAWvT,KAAKnE,aAAa0X,SAClCrT,EAAKsvB,wBAA0BxvB,KAAKnE,aAAa2zB,wBACjDtvB,EAAKuvB,iBAAmBzvB,KAAKnE,aAAa4zB,iBAC1CvvB,EAAS,KAAIF,KAAKnE,aAAiB,KACnCqE,EAAKwvB,OAAS1vB,KAAKnE,aAAa6zB,OACxB1vB,KAAKnE,aAAaC,MACtB,IAAK,SAGL,IAAK,QACDoE,EAAKpE,KAAOkE,KAAKnE,aAAaC,KAC9B,MACJ,IAAK,MACDoE,EAAKpE,KAAO,SACZ,MACJ,IAAK,OACDoE,EAAKpE,KAAO,SACZoE,EAAKqvB,mBAAoB,EAGjC,OAAOrvB,GAQX0e,EAAS/hB,UAAU6rB,eAAiB,WAChC,GAAI1oB,KAAKslB,iBAAkB,CAEvB,IAAK,IADDvO,KACK1f,EAAI,EAAGA,EAAI2I,KAAKslB,iBAAiB/tB,OAAQF,IAC9C,OAAQ2I,KAAKslB,iBAAiBjuB,IAC1B,IAAK,SACL,KAAKwlB,mBAAiBkE,OAClBhK,EAAMve,MAAOm3B,KAAM3vB,KAAKohB,KAAKwO,YAAY,UACrCruB,OAAQ,aAAcuS,GAAI9T,KAAK6T,QAAQC,GAAK,4BAC5CiD,QAAU4Y,KAAM3vB,KAAKohB,KAAKwO,YAAY,SAAU9b,GAAI,UAAa6b,KAAM3vB,KAAKohB,KAAKwO,YAAY,SAAU9b,GAAI,UAAa6b,KAAM3vB,KAAKohB,KAAKwO,YAAY,SAAU9b,GAAI,YACtK,MACJ,QACIiD,EAAMve,KAAKwH,KAAKslB,iBAAiBjuB,IAG7C,OAAO0f,EAGP,OAAO,MASf6H,EAAS/hB,UAAUyrB,eAAiB,WAChC,GAAItoB,KAAKqlB,QAAS,CAGd,IAAK,IAFDtO,KACA8Y,OAAc,EACTx4B,EAAI,EAAGA,EAAI2I,KAAKqlB,QAAQ9tB,OAAQF,IACrC,OAAQ2I,KAAKqlB,QAAQhuB,IACjB,IAAK,SACL,KAAKulB,cAAYkT,OACb/Y,EAAMve,KAAK,UACX,MACJ,IAAK,QACL,KAAKokB,cAAY/M,MACbkH,EAAMve,KAAK,SACX,MACJ,IAAK,YACL,KAAKokB,cAAYoE,UACb6O,EAAc7vB,KAAKohB,KAAKwO,YAAY,aACpC7Y,EAAMve,MAAOm3B,KAAME,EAAaA,YAAaA,EACzCE,WAAY,WAAYjc,GAAI9T,KAAK6T,QAAQC,GAAK,2BAClD,MACJ,IAAK,cACL,KAAK8I,cAAYqE,YACb4O,EAAc7vB,KAAKohB,KAAKwO,YAAY,eACpC7Y,EAAMve,MAAOm3B,KAAME,EACfA,YAAaA,EAAaE,WAAY,aAAcjc,GAAI9T,KAAK6T,QAAQC,GAAK,6BAE9E,MACJ,IAAK,SACL,KAAK8I,cAAYsE,UACb2O,EAAc7vB,KAAKohB,KAAKwO,YAAY,aACpC7Y,EAAMve,MACFm3B,KAAME,EAAaA,YAAaA,EAChCE,WAAY,WAAYjc,GAAI9T,KAAK6T,QAAQC,GAAK,wBAElD,MACJ,IAAK,UACL,KAAK8I,cAAYuE,WACb0O,EAAc7vB,KAAKohB,KAAKwO,YAAY,cACpC7Y,EAAMve,MACFm3B,KAAME,EAAaA,YAAaA,EAChCE,WAAY,YAAajc,GAAI9T,KAAK6T,QAAQC,GAAK,yBAEnD,MACJ,QACIiD,EAAMve,KAAKwH,KAAKqlB,QAAQhuB,IAGpC,OAAO0f,EAGP,OAAO,MAGf6H,EAAS/hB,UAAUsoB,eAAiB,SAAU7tB,EAAS04B,EAAoB91B,QAC5C,IAAvB81B,IAAiCA,GAAqB,QAC5C,IAAV91B,IAAoBA,EAAQ,GAChC,IAAIyF,EAASrI,EAET04B,IACAhwB,KAAK6jB,gBAET,IAAIoM,EACAC,EACJh2B,EAAkB,IAAVA,GAAe,EAAIA,EAE3B,IAAK,IADDi2B,KACK94B,EAAI,EAAGA,EAAIsI,EAAOpI,OAAQF,IAAK,CACpC6C,GAAgB,EAChB,IAAIkZ,EAAapT,KAAKrI,KAAK8Z,eAAe9R,EAAOtI,GAAGsJ,KAGpD,GAFAuvB,EAAa9c,MACb6c,KAC+B,iBAApBjwB,KAAK1I,QAAQD,GACpB64B,EAAWpd,MAAQmd,EAAend,MAAQ9S,KAAK1I,QAAQD,QAGvD,IAAK,IAAI+4B,EAAK,EAAGC,EAAKh4B,OAAOC,KAAKqH,EAAOtI,IAAK+4B,EAAKC,EAAG94B,OAAQ64B,IAAM,CAChE,IAAI9R,EAAO+R,EAAGD,GACVl2B,IAAU8F,KAAKZ,iBAA4B,aAATkf,EAClC2R,EAAe3R,GAAQ3e,EAAOtI,GAAGinB,GAEnB,YAATA,GAAuB5mB,oBAAkBiI,EAAOtI,GAAGinB,IAKxD4R,EAAW5R,GAAQ2R,EAAe3R,GAAQ3e,EAAOtI,GAAGinB,IAJpD4R,EAAW5R,GAAQte,KAAKmlB,eAAexlB,EAAOtI,GAAGinB,IAAO,EAAOpkB,GAC/D+1B,EAAe3R,GAAQ3e,EAAOtI,GAAGinB,IAOxC2R,EAA4B,SAC7BjwB,KAAK6jB,YAAYrrB,KAAK,IAAIsH,EAAOmwB,IAErCE,EAAqB33B,KAAK03B,GAE9B,OAAOC,GASXvR,EAAS/hB,UAAUyzB,kBAAoB,SAAUC,GAG7C,IAAK,IADDC,GAAiB,EACZJ,EAAK,EAAGK,EAFAp4B,OAAOC,KAAKi4B,GAEeH,EAAKK,EAAal5B,OAAQ64B,IAAM,CACxE,IAAI9R,EAAOmS,EAAaL,GACxB,OAAQ9R,GACJ,IAAK,UACDte,KAAKrI,KAAKL,QAAU0I,KAAKmlB,eAAenlB,KAAK1I,SAC7C,MACJ,IAAK,kBACD0I,KAAKrI,KAAK+4B,iBACV,MACJ,IAAK,cACD1wB,KAAKrI,KAAKoZ,YAAc/Q,KAAK+Q,YAC7B,MACJ,IAAK,eACD/Q,KAAKrI,KAAKqZ,aAAe6W,sBAAoB7nB,KAAKgR,cAClDwf,GAAiB,EACjB,MACJ,IAAK,uBACDxwB,KAAKrI,KAAKyG,qBAAuB4B,KAAK5B,qBACtC,MACJ,IAAK,6BACD4B,KAAKrI,KAAKia,2BAA6B5R,KAAK4R,2BAC5C,MACJ,IAAK,UACD5R,KAAKrI,KAAK0tB,QAAUrlB,KAAKsoB,iBACzB,MACJ,IAAK,iBACDtoB,KAAKrI,KAAKouB,eAAiB/lB,KAAK+lB,eAChC,MACJ,IAAK,oBACD/lB,KAAKrI,KAAKuQ,kBAAoB2f,sBAAoB7nB,KAAKkI,mBACvD,MACJ,IAAK,eACDlI,KAAKrI,KAAK2I,aAAeN,KAAKM,aAC9B,MACJ,IAAK,oBACDN,KAAKrI,KAAKg5B,kBAAoB3wB,KAAK2wB,kBACnC,MACJ,IAAK,eACD3wB,KAAKrI,KAAK4G,aAAespB,sBAAoB7nB,KAAKzB,cAClD,MACJ,IAAK,iBACDyB,KAAKrI,KAAKC,eAAiBiwB,sBAAoB7nB,KAAKpI,gBACpD,MACJ,IAAK,iBACDoI,KAAKrI,KAAKI,eAAiBiI,KAAKjI,eAChC,MACJ,IAAK,iBACIiI,KAAK/G,gBACN+G,KAAKrI,KAAKK,eAAiB6vB,sBAAoB7nB,KAAKhI,iBAExD,MACJ,IAAK,iBACDgI,KAAKrI,KAAK0I,eAAiBL,KAAKK,eAChC,MACJ,IAAK,sBACDL,KAAKrI,KAAK0H,oBAAsBW,KAAKX,oBACrC,MACJ,IAAK,aACDW,KAAKrI,KAAKqhB,WAAa6O,sBAAoB7nB,KAAKgZ,YAChD,MACJ,IAAK,0BACDhZ,KAAKrI,KAAKgiB,wBAA0B3Z,KAAK2Z,wBACzC,MACJ,IAAK,aAID,GAHA3Z,KAAKib,cAAiBjb,KAAKrJ,sBAAsBC,iBAAkBc,oBAAkBsI,KAAKrJ,WAAW+C,QAC9FsG,KAAKrJ,WAAWE,mBAAmB2tB,oBAC1CxkB,KAAK2mB,gBAAgB3mB,KAAKrJ,YACtBqJ,KAAKib,YAAa,CAClB,GAAI9jB,EAAgB6I,MAAO,CACvB,IAAIuO,EAAQlQ,WAAS,QAAS2B,KAAKrJ,YACnCqJ,KAAKrI,KAAKhB,YAAesd,OAAQjU,KAAKxC,SAAU+Q,MAAOA,OAEtD,CACD,IAAI9P,EAAOuB,KAAKrJ,WAChBqJ,KAAKrI,KAAKhB,WAAe8H,aAAgB7H,cACrB,IAAIA,cAAY6H,EAAK9H,WAAY8H,EAAKuvB,aAAcvvB,EAAK5H,SAAzEmJ,KAAKxC,SAETwC,KAAK5B,uBACL4B,KAAKrI,KAAKkiB,cAAc+W,qBAAsB,QAIlD5wB,KAAK0nB,mBACD1nB,KAAK5B,uBACL4B,KAAKrI,KAAKkiB,cAAclP,sBACxB3K,KAAKrI,KAAKkiB,cAAcgX,cAAc,MACtC7wB,KAAKrI,KAAKkiB,cAAciX,eAGhC,MACJ,IAAK,QACD9wB,KAAKrI,KAAKwd,MAAQnV,KAAKmV,MACvB,MACJ,IAAK,oBACGob,EAAQjS,GACRte,KAAKgjB,cAGLhjB,KAAK+iB,YAET,MACJ,IAAK,qBACD/iB,KAAKrI,KAAK82B,UACV,MACJ,IAAK,YACDzuB,KAAKrI,KAAK0wB,UAAYroB,KAAKqoB,UAC3B,MACJ,IAAK,cACDroB,KAAKrI,KAAKwb,YAAc0U,sBAAoB7nB,KAAKmT,aACjD,MACJ,IAAK,aACDnT,KAAKrI,KAAKqH,WAAagB,KAAKhB,WAC5B,MACJ,IAAK,gBACDgB,KAAKrI,KAAKga,cAAgB3R,KAAK2R,cAC/B,MACJ,IAAK,YACD3R,KAAKrI,KAAKywB,UAAYpoB,KAAKooB,UAC3B,MACJ,IAAK,SACI1wB,oBAAkBsI,KAAKinB,SAAoC,iBAAjBjnB,KAAW,SAAgD,IAA9BA,KAAKinB,OAAOzoB,QAAQ,OAC5FwB,KAAK6T,QAAQrZ,MAAMysB,OAASjnB,KAAKinB,QAErCjnB,KAAKrI,KAAKsvB,OAASjnB,KAAKinB,OACxB,MACJ,IAAK,QACIvvB,oBAAkBsI,KAAKqN,QAAkC,iBAAhBrN,KAAU,QAA+C,IAA7BA,KAAKqN,MAAM7O,QAAQ,OACzFwB,KAAK6T,QAAQrZ,MAAM6S,MAAQrN,KAAKqN,OAEpCrN,KAAKrI,KAAK0V,MAAQrN,KAAKqN,MACvB,MACJ,IAAK,SACDrN,KAAKrI,KAAK2pB,OAASthB,KAAKshB,OACxB,MACJ,IAAK,mBACDthB,KAAKrI,KAAK8wB,iBAAmBzoB,KAAKyoB,iBAClC,MACJ,IAAK,eACDzoB,KAAKrI,KAAKqwB,aAAehoB,KAAKgoB,aAC9B,MACJ,IAAK,cACDhoB,KAAKrI,KAAKswB,YAAcjoB,KAAKioB,YAC7B,MACJ,IAAK,iBACDjoB,KAAKrI,KAAKuwB,eAAiBloB,KAAKkoB,eAChC,MACJ,IAAK,mBACDloB,KAAKrI,KAAKwwB,iBAAmBnoB,KAAKmoB,iBAClC,MACJ,IAAK,sBACDnoB,KAAKrI,KAAK2H,oBAAsBU,KAAKV,oBACrC,MACJ,IAAK,mBACDU,KAAKrI,KAAK4tB,iBAAmBvlB,KAAKulB,iBAClC,MACJ,IAAK,iBACDvlB,KAAKrI,KAAK8tB,eAAiBzlB,KAAKylB,eAChC,MACJ,IAAK,YACDzlB,KAAKrI,KAAKgwB,UAAY3nB,KAAK2nB,UAC3B,MACJ,IAAK,kBACD3nB,KAAKrI,KAAKyI,gBAAkBJ,KAAKI,gBACjC,MACJ,IAAK,gBACDJ,KAAKrI,KAAK4I,cAAgBP,KAAKO,cAC/B,MACJ,IAAK,mBACDP,KAAKrI,KAAK6wB,iBAAmBX,sBAAoB7nB,KAAKwoB,kBACtD,MACJ,IAAK,gBACDxoB,KAAKrI,KAAKyV,cAAgBya,sBAAoB7nB,KAAKoN,eACnDpN,KAAKrI,KAAK82B,UACV,MACJ,IAAK,mBACDzuB,KAAKrI,KAAK2tB,iBAAmBtlB,KAAK0oB,iBAClC,MACJ,IAAK,oBACD1oB,KAAKrI,KAAK+tB,kBAAoB1lB,KAAK0lB,kBACnC,MACJ,IAAK,iBACD1lB,KAAKrI,KAAK6tB,eAAiBqC,sBAAoB7nB,KAAKwlB,gBACpD,MACJ,IAAK,kBACDxlB,KAAKrI,KAAKgxB,gBAAkBd,sBAAoB7nB,KAAK2oB,iBACrD,MACJ,IAAK,eACG3oB,KAAKrI,KAAKs3B,QAA0C,WAAhCjvB,KAAKrI,KAAKkE,aAAaC,MAAqBy0B,EAAQjS,GAAMxiB,OACtD,SAAvBy0B,EAAQjS,GAAMxiB,MAA0C,QAAvBy0B,EAAQjS,GAAMxiB,OAChDkE,KAAKrI,KAAKo5B,YAEd/wB,KAAKrI,KAAKkE,aAAemE,KAAK4oB,sBAGlC4H,GACAxwB,KAAKrI,KAAK82B,YAUtB7P,EAAS/hB,UAAUkN,QAAU,WACzB,IAAIinB,EAAkBhxB,KAAK6T,QAC3B,GAAKmd,EAAL,CAGA,IAAIC,KAAmBD,EAAgB/lB,cAAc,mBACjD+lB,EAAgB/lB,cAAc,mBAC9BgmB,GACAjxB,KAAKmmB,eAETnmB,KAAKkxB,iBACDD,GACAhvB,EAAOpF,UAAUkN,QAAQhN,KAAKiD,MAE9BA,KAAKrI,MACLqI,KAAKrI,KAAKoS,UAEV/J,KAAKymB,YACLzmB,KAAKymB,WAAW1c,UAMpB,IAAK,IAJDmb,GAAW,aAAc,aAAc,eAAgB,eAAgB,cAAe,kBACtF,oBAAqB,kBAAmB,gBAAiB,gBAAiB,gBAAiB,eAC3F,cAAe,iBAAkB,mBAAoB,oBAAqB,aAAc,sBACxF,kBAAmB,YAAa,uBAAwB,gBACnD7tB,EAAI,EAAGA,EAAI6tB,EAAQ3tB,OAAQF,IAC5B2I,KAAKklB,EAAQ7tB,MACb2I,KAAKklB,EAAQ7tB,IAAM,MAG3B2I,KAAK6T,QAAQlG,UAAY,GACzB3N,KAAKrI,KAAO,OAShBinB,EAAS/hB,UAAUs0B,SAAW,WACtBz5B,oBAAkBsI,KAAKrI,SAGtBD,oBAAkBsI,KAAK6mB,gBAAgBC,WACxCpvB,oBAAkB05B,SAASC,eAAerxB,KAAKrI,KAAKkvB,gBAAgBC,aACpEsK,SAASC,eAAerxB,KAAK6mB,gBAAgBC,UAAUhT,GAAK9T,KAAKrI,KAAKkvB,gBAAgBC,SACtF9mB,KAAK6mB,gBAAgBC,SAAW9mB,KAAKrI,KAAKkvB,gBAAgBC,UAE9D7kB,EAAOpF,UAAUs0B,SAASp0B,KAAKiD,MAC/BA,KAAKrI,KAAKw5B,aAQdvS,EAAS/hB,UAAUy0B,eAAiB,WAWhC,IAAK,IAVDC,GAAa,eAAgB,eAC7B,iBAAkB,UAAW,iBAAkB,mBAAoB,mBACnEC,GACAxgB,cAAe,WAAY,YAAa,eAAgB,oBAAqB,oBAAqB,aAClGhZ,gBAAiB,OAAQ,OAAQ,sBAAuB,qBAAsB,eAAgB,iBAC9FJ,gBAAiB,SAAU,WAAY,cACvC2G,gBAAkBjH,WAAamxB,qBAI1BpxB,EAAI,EAAGA,EAAIk6B,EAAUh6B,OAAQF,IAElC,IAAK,IADDo6B,EAAgBzxB,KAAKuxB,EAAUl6B,IAC1BsF,EAAI,EAAG+0B,EAAMF,EAAgBD,EAAUl6B,KAAOK,oBAAkBg6B,IAAQ/0B,EAAI+0B,EAAIn6B,OAASoF,IAAK,QAE5F80B,EADMC,EAAI/0B,IAKzB,OADAqD,KAAK2xB,gBATiB,SAAU,OAAQ,oBAAqB,iBAAkB,WAC3E,kBAAmB,WAAY,cAQC3xB,KAAK1I,SAClC0I,KAAK4xB,aAAaL,IAE7B3S,EAAS/hB,UAAU80B,eAAiB,SAAUE,EAAgBv6B,GAC1D,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQC,OAAQF,IAC5BC,EAAQD,GAAGC,SACX0I,KAAK8xB,eAAeD,EAAgBv6B,EAAQD,IAC5C2I,KAAK2xB,eAAeE,EAAgBv6B,EAAQD,GAAGC,UAG/C0I,KAAK8xB,eAAeD,EAAgBv6B,EAAQD,KAIxDunB,EAAS/hB,UAAUi1B,eAAiB,SAAUD,EAAgBlyB,GAC1D,IAAK,IAAItI,EAAI,EAAGA,EAAIw6B,EAAet6B,OAAQF,WAChCsI,EAAOkyB,EAAex6B,IAC7BsI,EAAOlC,WAGfmhB,EAAS/hB,UAAU8nB,kBAAoB,SAAUjnB,GAC7C,GAAKhG,oBAAkBgG,EAAEq0B,SAAzB,CAGA,IAAIxwB,EAAS7D,EAAE6D,QACVA,EAAOgH,UAAUC,SAAS,sBAC3BjH,EAAOgH,UAAUC,SAAS,uBAA4BxI,KAAKgyB,gBAAmBhyB,KAAKrI,KAAKs3B,QACxFjvB,KAAKijB,sBAAsB1hB,GAE/BvB,KAAKgyB,gBAAiB,EACtBhyB,KAAK+S,OAAO,qBAAuBxR,OAAQA,MAO/Cqd,EAAS/hB,UAAUgC,QAAU,WACzB,OAAOmB,KAAKrI,KAAKkH,WAOrB+f,EAAS/hB,UAAUo1B,SAAW,WAC1B,OAAOjyB,KAAKrI,KAAKs6B,YAWrBrT,EAAS/hB,UAAUq1B,UAAY,SAAUzzB,EAAMvE,EAAOi4B,GAClD,GAAInyB,KAAKjE,WAAY,CAEjBiE,KAAKjE,WAA6B,oBAAI,EACtCiE,KAAKjE,WAAWm2B,UAAUzzB,EAAMvE,EAAOi4B,KAQ/CvT,EAAS/hB,UAAUk0B,UAAY,WACvB/wB,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAWg1B,aAQ7BnS,EAAS/hB,UAAUu1B,SAAW,WACtBpyB,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAWq2B,YAW7BxT,EAAS/hB,UAAUw1B,WAAa,SAAUxoB,EAAUiJ,EAAO7Y,GACnD+F,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAWs2B,WAAWxoB,EAAUiJ,EAAO7Y,IAUzD2kB,EAAS/hB,UAAUy1B,UAAY,SAAUp4B,EAAOuE,GAC5C,GAAIuB,KAAKrI,KAAKoE,WACV,GAAKrE,oBAAkBwC,GAMnB8F,KAAKrI,KAAKoE,WAAWu2B,UAAUp4B,EAAOuE,OANX,CAC3B,IAAI+oB,EAAWxnB,KAAKrI,KAAKwE,wBAAwBjC,GACjDkC,SAAOorB,EAAU/oB,GACjBuB,KAAKrI,KAAKoE,WAAWu2B,UAAUp4B,EAAOstB,KAelD5I,EAAS/hB,UAAU01B,aAAe,SAAUC,EAAW/zB,GAC/CuB,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAWw2B,aAAaC,EAAW/zB,IASrDmgB,EAAS/hB,UAAU41B,UAAY,SAAU9zB,GACjCqB,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAW02B,UAAU9zB,IAUvCigB,EAAS/hB,UAAU61B,SAAW,SAAU7oB,EAAUiJ,GAC1C9S,KAAKjE,YACLiE,KAAKjE,WAAW22B,SAAS7oB,EAAUiJ,IAU3C8L,EAAS/hB,UAAU81B,mBAAqB,SAAU5b,EAAO6b,GACjD5yB,KAAKrI,KAAKk7B,eACV7yB,KAAKrI,KAAKk7B,cAAcC,YAAY/b,EAAO6b,IAQnDhU,EAAS/hB,UAAUk2B,QAAU,WACrB/yB,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAWg3B,WAU7BnU,EAAS/hB,UAAUm2B,kBAAoB,SAAUC,EAAGC,GAC5ClzB,KAAKmzB,qBACLnzB,KAAKmzB,oBAAoBH,kBAAkBC,EAAGC,IAStDtU,EAAS/hB,UAAUu2B,UAAY,SAAUjkB,GACjCnP,KAAKrI,KAAKoE,YACViE,KAAKrI,KAAKoE,WAAWq3B,UAAUjkB,IAQvCyP,EAAS/hB,UAAUtB,wBAA0B,WACzC,OAAOyE,KAAKrI,KAAK4D,2BAWrBqjB,EAAS/hB,UAAUw2B,aAAe,SAAUx7B,EAAKib,EAAO7Y,GACpD+F,KAAKrI,KAAK07B,aAAax7B,EAAKib,EAAO7Y,GACnC,IAAI4P,EAAW7J,KAAKrI,KAAKmH,wBAAwBjH,GAC7Ca,EAASsH,KAAK7D,wBAAwB0N,GACrCnS,oBAAkBgB,IACnBmC,GAAaZ,MAAOvB,EAAQ4C,OAAQ,QAAU0E,KAAMA,KAAKhF,gBAAiBtC,EAAOwB,MAAO8F,KAAKrI,KAAK8wB,iBAAkB3V,IAW5H8L,EAAS/hB,UAAU6B,WAAa,SAAU7G,EAAK+T,GAC3C,IAAI1N,EAAiB8B,KAAK7D,wBACtBm3B,EAAatzB,KAAKrI,KAAK4D,0BAA0B,GACjDpB,EAAQ,EACRzB,KACJwF,EAAe8nB,KAAK,SAAU/rB,GAC1B,OAAIA,EAAMq5B,KAAgBz7B,IACtBa,EAASuB,GACF,KAMfE,EAAQzB,EAAOyB,MACfyR,EAAQzR,MAAQA,EAChByR,EAAQ1R,MAAQxB,EAAOwB,MACvB0R,EAAQtS,aAAeZ,EAAOY,aAC9BsS,EAAQxR,SAAW1B,EAAO0B,SAC1BwR,EAAQ5S,SAAWN,EAAOM,SAC1B4S,EAAQ9S,WAAaJ,EAAOI,WAC5B8S,EAAQuB,cAAgBzU,EAAOyU,cAC/BvB,EAAQvS,gBAAkBX,EAAOW,gBACjCuS,EAAQtN,eAAiB5F,EAAO4F,eAChCsN,EAAQzS,SAAWT,EAAOS,SAC1B6G,KAAKrI,KAAK+G,WAAW7G,EAAK+T,IAQ9BgT,EAAS/hB,UAAU02B,SAAW,SAAUC,GAChCxzB,KAAKrI,KAAK87B,aACVzzB,KAAKrI,KAAK87B,YAAYF,SAASC,IASvC5U,EAAS/hB,UAAU62B,sBAAwB,SAAUjwB,GAC7CzD,KAAKyzB,aACLzzB,KAAKrI,KAAK87B,YAAYC,sBAAsBjwB,IAUpDmb,EAAS/hB,UAAU82B,iBAAmB,SAAU9pB,EAAUoC,GACtD,OAAOjM,KAAKrI,KAAKg8B,iBAAiB9pB,EAAUoC,IAQhD2S,EAAS/hB,UAAU+2B,iBAAmB,SAAU9gB,GAC5C,OAAO+gB,uBAAqB7zB,KAAK6jB,YAAa,SAAUzgB,GACpD,GAAIA,EAAK0P,QAAUA,EACf,OAAO1P,IAGZ,IAQPwb,EAAS/hB,UAAU4U,eAAiB,SAAU9Q,GAC1C,IAAImzB,EAAU9zB,KAAK/G,cAAgB+G,KAAKrI,KAAKL,QAAU0I,KAAK1I,QAC5D,OAAOu8B,uBAAqBC,EAAS,SAAU1wB,GAC3C,GAAIA,EAAKzC,MAAQA,EACb,OAAOyC,IAGZ,IAOPwb,EAAS/hB,UAAUk3B,oBAAsB,WACrC,OAAO/zB,KAAKrI,KAAKo8B,uBAOrBnV,EAAS/hB,UAAUm3B,iBAAmB,WAClC,OAAOh0B,KAAKrI,KAAKq8B,oBAOrBpV,EAAS/hB,UAAUo3B,sBAAwB,WACvC,OAAOj0B,KAAKrI,KAAKs8B,yBASrBrV,EAAS/hB,UAAUq3B,YAAc,SAAU57B,EAAM67B,GAC7Cn0B,KAAKrI,KAAKu8B,YAAY57B,EAAM67B,GAC5Bn0B,KAAKkiB,qBASTtD,EAAS/hB,UAAUu3B,YAAc,SAAU97B,EAAM+7B,GAC7Cr0B,KAAKrI,KAAKy8B,YAAY97B,EAAM+7B,GAC5Br0B,KAAKkiB,qBAQTtD,EAAS/hB,UAAUy3B,uBAAyB,SAAUxhB,GAClD,OAAO9S,KAAKrI,KAAK28B,uBAAuBxhB,IAQ5C8L,EAAS/hB,UAAU03B,uBAAyB,SAAUr6B,GAClD,OAAO8F,KAAKrI,KAAK48B,uBAAuBr6B,IAQ5C0kB,EAAS/hB,UAAU23B,qBAAuB,SAAU7zB,GAChD,OAAOX,KAAKrI,KAAK68B,qBAAqB7zB,IAQ1Cie,EAAS/hB,UAAU43B,sBAAwB,SAAU3hB,GACjD,OAAO9S,KAAKrI,KAAK88B,sBAAsB3hB,IAE3C8L,EAAS/hB,UAAU63B,wBAA0B,SAAU/zB,GACnD,IACIzG,EAAQ25B,uBAAqB7zB,KAAKrI,KAAgB,YAAG,SAAUyL,EAAMlJ,GACrE,GAAIkJ,EAAKzC,MAAQA,EACb,OAAOzG,IAGZ,GACH,OAAQxC,oBAAkBwC,IAAkB,EAATA,GAQvC0kB,EAAS/hB,UAAUgV,oBAAsB,SAAUlR,GAC/C,OAAOX,KAAKrI,KAAKka,oBAAoBlR,IAQzCie,EAAS/hB,UAAU+C,WAAa,SAAU+0B,GAEtC,OADA30B,KAAKkiB,kBAAkBliB,KAAKrI,KAAKiI,WAAW+0B,IACrC30B,KAAK6jB,aAEhBjF,EAAS/hB,UAAUqlB,kBAAoB,SAAUviB,GAC7C,IAAIuc,EACApJ,EACA8hB,EAAcl9B,oBAAkBiI,GAAUK,KAAKrI,KAAKiI,aAAeD,GACzC,IAA1BK,KAAKZ,iBAA0BY,KAAK6jB,YAAY7jB,KAAKZ,mBACpD1H,oBAAkBsI,KAAK6jB,YAAY7jB,KAAKZ,iBAAiBmU,YAC1D2I,EAAOlc,KAAK6jB,YAAY7jB,KAAKZ,iBAAiBmU,SAC9CT,EAAQ9S,KAAK6jB,YAAY7jB,KAAKZ,iBAAiB0T,OAEnD,IACIod,EADA2E,GAAgB,EAEpB,IAAK70B,KAAK4R,4BAA+B5R,KAAK4R,4BAA8B5R,KAAK6jB,YAAYtsB,SAAWq9B,EAAYr9B,OAAS,CACzHyI,KAAK6jB,eACL,IAAK,IAAIxsB,EAAI,EAAGA,EAAIu9B,EAAYr9B,OAAQF,IAAK,CACzC64B,KACA,IAAK,IAAIE,EAAK,EAAGC,EAAKh4B,OAAOC,KAAKs8B,EAAYv9B,IAAK+4B,EAAKC,EAAG94B,OAAQ64B,IAAM,CACrE,IAAI9R,EAAO+R,EAAGD,GACdF,EAAW5R,GAAQsW,EAAYv9B,GAAGinB,GAEtCte,KAAK6jB,YAAYrrB,KAAK,IAAIsH,EAAOowB,IAC7Bpd,IAAU9S,KAAK6jB,YAAYxsB,GAAGyb,OAAsC,aAA7B9S,KAAK6jB,YAAYxsB,GAAG8L,MAAyBzL,oBAAkBwkB,IAAkB,KAATA,IAC/Glc,KAAK6jB,YAAYxsB,GAAGkc,SAAW2I,IAa3C,OARAlc,KAAU,WAAK,WACXA,KAAKrI,KAAKL,QAAQC,SAAWyI,KAAK6jB,YAAYtsB,SAC9Cs9B,GAAgB,GAEfA,GACD70B,KAAKS,eAAgBnJ,QAAS0I,KAAK6jB,cAAe,GAEtD7jB,KAAU,eAAI6d,EACP7d,KAAK6jB,aAOhBjF,EAAS/hB,UAAUi4B,gCAAkC,SAAUC,GAC3D,IAAIxtB,EAAQvH,KACRA,KAAKgU,SAELhU,KAAKsnB,eAAe,uBAAmBzJ,EAAW,WAM9C,IAAK,IAHDmX,EAAUztB,EAAM5P,KAAKkhB,gBACrBoc,EAAS1tB,EAAM5P,KAAKu9B,iBACpB7R,EAAY9b,EAAM5P,KAAKw9B,yBAAyBJ,GAC3Ch7B,EAAI,EAAGA,EAAIi7B,EAAQz9B,OAAQwC,IAChC,GAAIi7B,EAAQj7B,GAAGq7B,YAAc19B,oBAAkBs9B,EAAQj7B,GAAGG,OAAQ,CAC9D,IAAIuF,EAAOu1B,EAAQj7B,GAAQ,MAAEspB,GACzBgS,EAAe,IAAIC,eAAa/tB,EAAM5P,KAAM4P,EAAM5P,KAAK49B,gBACvDC,EAAKjuB,EAAMosB,iBAAiBqB,EAAQj7B,GAAGG,MAAOmpB,EAAY4R,GAC9DI,EAAaI,UAAUD,EAAI/1B,EAAMu1B,EAAQj7B,GAAG0E,MAAQvE,MAAO86B,EAAQj7B,GAAS,YAWhG6kB,EAAS/hB,UAAU64B,WAAa,WAC5B,OAAO11B,KAAKrI,KAAK+9B,cAErB9W,EAAS/hB,UAAU6iB,yBAA2B,WAE1C1f,KAAKrI,KAAa,qBAAEuK,MAAMlC,OAE9B4e,EAAS/hB,UAAU84B,aAAe,SAAUC,EAAct+B,GAEtD0I,KAAKrI,KAAa,aAAEuK,MAAMlC,MAAO41B,EAAct+B,KAEnDsnB,EAAS/hB,UAAUwxB,oBAAsB,WACrCruB,KAAKS,eAAgBzI,eAAgBO,YAAU,aAAcyH,KAAKrI,KAAKK,kBAAmB,GAC1FgI,KAAKS,eAAgBuQ,aAAczY,YAAU,aAAcyH,KAAKrI,KAAKqZ,gBAAiB,GACtFhR,KAAKS,eAAgB7I,eAAgBW,YAAU,aAAcyH,KAAKrI,KAAKC,kBAAmB,GAC1FoI,KAAKS,eAAgBlC,aAAchG,YAAU,aAAcyH,KAAKrI,KAAK4G,gBAAiB,IAO1FqgB,EAAS/hB,UAAU+a,gBAAkB,WACjC,OAAO5X,KAAKrI,KAAKigB,mBAOrBgH,EAAS/hB,UAAUg5B,YAAc,WAG7B,IAAK,IAFDC,KACA7tB,EAAOjI,KAAKrI,KAAKk+B,cACZx+B,EAAI,EAAGe,EAAM6P,EAAK1Q,OAAQF,EAAIe,EAAKf,IACnC4Q,EAAK5Q,GAAGkR,UAAUC,SAAS,iBAC5BstB,EAAMt9B,KAAKyP,EAAK5Q,IAGxB,OAAOy+B,GAQXlX,EAAS/hB,UAAUV,sBAAwB,WACvC,OAAO6D,KAAKrI,KAAKghB,iBAOrBiG,EAAS/hB,UAAUb,gBAAkB,WACjC,OAAOgE,KAAKrI,KAAKoE,WAAWC,mBAOhC4iB,EAAS/hB,UAAUuP,iBAAmB,WAClC,OAAOpM,KAAKrI,KAAKyU,oBAOrBwS,EAAS/hB,UAAUk5B,eAAiB,WAChC,OAAO/1B,KAAKrI,KAAKo+B,kBAQrBnX,EAAS/hB,UAAU+B,cAAgB,SAAU1E,GACzC,OAAO8F,KAAKrI,KAAKiH,cAAc1E,IAQnC0kB,EAAS/hB,UAAUm5B,WAAa,SAAUz0B,GACtC,OAAOvB,KAAKrI,KAAKq+B,WAAWz0B,IAQhCqd,EAAS/hB,UAAUo5B,oBAAsB,SAAUnjB,GAC/C,OAAO9S,KAAKrI,KAAKs+B,oBAAoBnjB,IAOzC8L,EAAS/hB,UAAUoM,kBAAoB,WAEnC,IAAK,IADDitB,KACK9F,EAAK,EAAGC,EAAKrwB,KAAK6jB,YAAauM,EAAKC,EAAG94B,OAAQ64B,IAAM,CAC1D,IAAIlkB,EAAMmkB,EAAGD,GACTlkB,EAAIiqB,SACJD,EAAK19B,KAAK0T,GAGlB,OAAOgqB,GAOXtX,EAAS/hB,UAAU6b,YAAc,WAC7BA,cAAY1Y,KAAK6T,UAOrB+K,EAAS/hB,UAAU0Z,YAAc,WAC7BA,cAAYvW,KAAK6T,UAOrB+K,EAAS/hB,UAAU4xB,QAAU,WACzBzuB,KAAK6e,sBACL7e,KAAK2mB,gBAAgB3mB,KAAKrJ,YACrBQ,EAAgB6I,QACjBA,KAAKrI,KAAKhB,WAAeqJ,KAAKrJ,sBAAsBC,cAChD,IAAIA,cAAYoJ,KAAKrJ,WAAWA,WAAYqJ,KAAKrJ,WAAWq3B,aAAchuB,KAAKrJ,WAAWE,SAD3BmJ,KAAKxC,UAG5EwC,KAAKrI,KAAK82B,WAQd7P,EAAS/hB,UAAUgP,kBAAoB,WACnC,OAAO7L,KAAKmpB,gBAAgBxZ,qBAQhCiP,EAAS/hB,UAAUu5B,kBAAoB,WACnC,IAAIC,KACAn6B,EAAqB8D,KAAK7D,wBAC9B,GAAK6D,KAAK+Q,YASNslB,EAAiBn6B,OARjB,IAAK,IAAI7E,EAAI,EAAGA,EAAI6E,EAAmB3E,OAAQF,IAC3Cg/B,EAAe79B,KAAK0D,EAAmB7E,IAClC6E,EAAmB7E,GAAG8B,WACvB9B,GAAK+B,EAAoB8C,EAAmB7E,IAAIE,QAO5D,OAAO8+B,GAOXzX,EAAS/hB,UAAU+S,qBAAuB,WACtC,OAAO5P,KAAKmpB,gBAAgBvZ,wBAQhCgP,EAAS/hB,UAAUsO,iBAAmB,SAAUmrB,GAC5Ct2B,KAAKmpB,gBAAgBhe,iBAAiBmrB,IAQ1C1X,EAAS/hB,UAAU6zB,eAAiB,SAAU6F,GACtC7+B,oBAAkB6+B,IAAcA,GAChCv2B,KAAKrI,KAAKL,QAAU0I,KAAKmlB,eAAenlB,KAAK1I,SAC7C0I,KAAKrI,KAAK+4B,kBAGV1wB,KAAKrI,KAAK8I,eAAgBnJ,QAAS0I,KAAKmlB,eAAenlB,KAAK1I,WAAY,IAQhFsnB,EAAS/hB,UAAU25B,cAAgB,WAC/Bx2B,KAAKrI,KAAK6+B,iBASd5X,EAAS/hB,UAAUomB,sBAAwB,SAAU1hB,GACjD,GAA+B,UAA3BvB,KAAKnE,aAAaC,KAAkB,CAGpC,GAAIkE,KAAKhE,kBAAkBgE,KAAK+e,gBAAgBxnB,QAC5CyI,KAAKhE,kBAAkBgE,KAAKgf,gBAAgBznB,QAAUyI,KAAKhE,kBAAkBgE,KAAKmU,cAAc5c,OAAQ,CACxG,IAAIk/B,EAAYz2B,KAAKrI,KAAKoE,WAAc,UAGxC,OAFAiE,KAAKrI,KAAKoE,WAAqB,WAAE,aAAc06B,QAC/Cz2B,KAAK02B,cAAgBn1B,IAI7B,GAAIvB,KAAKmT,YAAa,CAClB,IAAIwjB,EAAUp1B,EAAO2J,QAAQ,kBAAkBgY,cAC3CxqB,EAASsH,KAAK7D,wBAAwBw6B,EAAQ9sB,UAC9CtI,EAAOgH,UAAUC,SAAS,oBAC1BxI,KAAK42B,YAAYD,EAASj+B,GAG1BsH,KAAK62B,UAAUF,EAASj+B,OAG3B,CAEGA,GADAi+B,EAAU32B,KAAKrI,KAAKq+B,WAAWz0B,IACdqK,QACjB5L,KAAKV,sBACL5G,EAASsH,KAAK7D,wBAAwBw6B,EAAQ9sB,WAE9CtI,EAAOgH,UAAUC,SAAS,oBAC1BxI,KAAK42B,YAAYD,EAAQh4B,IAAKjG,GAG9BsH,KAAK62B,UAAUF,EAAQh4B,IAAKjG,KAaxCkmB,EAAS/hB,UAAUg6B,UAAY,SAAUl4B,EAAKjG,EAAQb,EAAKsC,GACvD,IAAIoN,EAAQvH,KACZtH,EAASsH,KAAK82B,yBAAyBn4B,EAAKjG,IACvChB,oBAAkBiH,IAAQA,EAAIe,MAAM,GAAG6I,UAAUC,SAAS,kBAC3DxI,KAAKwrB,cAAc7sB,GAAK,GAE5B,IAAIuE,GAASzE,KAAM/F,EAAQiG,IAAKA,EAAKwK,QAAQ,GAC7CnJ,KAAKoJ,Qd10EU,Yc00EgBlG,EAAM,SAAU6zB,GAC3C,IAAKA,EAAc5tB,OAAQ,CACvB5B,EAAMyvB,eAAe,SAAUr4B,EAAKjG,GAChCq+B,EAAchU,WACdxb,EAAM0vB,0BAA0Bv+B,EAAQ,SAAUb,EAAKsC,GAG3D,KAAM1D,EAAa8Q,IAAW/N,EAAU+N,OAAapQ,EAAgBoQ,KAAW7P,oBAAkBgB,EAAe,WAAK,CAClH,IAAIw+B,GAAiBz4B,KAAM/F,EAAQiG,IAAKA,GACxC4I,EAAM4vB,4BACN5vB,EAAM6B,QAAQwQ,EAAiBsd,QAK/CtY,EAAS/hB,UAAUo6B,0BAA4B,SAAUv+B,EAAQ4C,EAAQzD,EAAKsC,GAC1E,IAAMzC,oBAAkBG,IAAQa,EAAOsH,KAAKzE,0BAA0B,MAAQ1D,KACxEH,oBAAkByC,IAAUA,IAAUzB,EAAOyB,OADnD,CAIA,IAAIjC,EAAUkB,EAAoBV,GAAQ+E,OAAO,SAAUC,GACvD,OAAOA,EAAErE,kBAEbnB,EAAQoE,QAAQ5D,GAChB,IAAK,IAAIrB,EAAI,EAAGA,EAAIa,EAAQX,OAAQF,IAChC2I,KAAKg3B,eAAe17B,EAAQ,KAAMpD,EAAQb,MAGlDunB,EAAS/hB,UAAUs6B,0BAA4B,WAC3C,IAAIC,EAAUp3B,KAAKrI,KAAK2a,4BAA8B,GAAKtS,KAAKrI,KAAK4a,6BAA+B,GAChGvS,KAAKrI,KAAKsH,mBAAqB,GAAKm4B,IACpCp3B,KAAKrI,KAAKkiB,cAAcwd,uBAGhCzY,EAAS/hB,UAAUi6B,yBAA2B,SAAUn4B,EAAKjG,GAezD,OAdIsH,KAAK+Q,aAAkD,QAAnC/Q,KAAKgR,aAAaC,cAA0BjR,KAAK8jB,aAAepsB,oBAAkBgB,KACrGjC,EAAauJ,MACdtH,EAASsH,KAAKxC,SAASC,OAAO,SAAUC,GACpC,OAAOA,EAAErE,kBAGR3B,oBAAkBgB,KAEnBA,EADAsH,KAAKwlB,eACIxlB,KAAKrI,KAAKwE,wBAAwBwC,EAAI0N,aAAa,kBAGnDrM,KAAKrI,KAAKwE,wBAAwBwC,EAAIkL,WAGhDnR,GAUXkmB,EAAS/hB,UAAU+5B,YAAc,SAAUj4B,EAAKjG,EAAQb,GACpD,IAAI0P,EAAQvH,KAERkD,GAASzE,KADb/F,EAASsH,KAAK82B,yBAAyBn4B,EAAKjG,GACjBiG,IAAKA,EAAKwK,QAAQ,GAC7CnJ,KAAKoJ,Qdr4EW,acq4EgBlG,EAAM,SAAUo0B,GAC5C,IAAKA,EAAenuB,OAAQ,CACpBmuB,EAAetU,aACfzb,EAAM0vB,0BAA0Bv+B,EAAQ,WAAYb,GAExD0P,EAAMyvB,eAAe,WAAYr4B,EAAKjG,GACtC,IAAIw+B,GAAiBz4B,KAAM/F,EAAQiG,IAAKA,GACxC,IAAKlI,EAAa8Q,KACdA,EAAM4vB,4BACN5vB,EAAM6B,QAAQmuB,EAAkBL,GAC5B3vB,EAAMoS,yBAAyB,CACZpS,EAAM5P,KAAK+9B,aAAa8B,kBAAkBC,aAC7ClwB,EAAM5P,KAAK+9B,aAAa8B,kBAAkBE,UACzBnwB,EAAM5P,KAAKggC,iBAAkBpwB,EAAM0f,QAChE1f,EAAM5P,KAAK+9B,aAAa8B,kBAAkBI,SAAS,EAAGrwB,EAAM5P,KAAKggC,qBAazF/Y,EAAS/hB,UAAUg7B,cAAgB,SAAU19B,GACzC,IAAM6F,KAAK+Q,aAAkD,QAAnC/Q,KAAKgR,aAAaC,cAA2BjR,KAAK5B,wBAA0B3H,EAAauJ,MAAO,CACtH,IAAI8O,EAAM9O,KAAKrI,KAAKhB,WAAW8G,OAAO,SAAUC,GAI5C,OAHIA,EAAErE,iBAAmBqE,EAAEvD,QAAUA,IACjCuD,EAAEvE,UAAW,GAEVuE,EAAErE,iBAAmBqE,EAAEvD,QAAUA,IAE5C6F,KAAK83B,aAAahpB,EAAK,KAAM3U,GAAO,OAEnC,CACG2U,EAAM9O,KAAK+3B,iBAAiB59B,GAAhC,IACIzB,EAASH,YAAU,UAAWuW,GAClC9O,KAAK83B,aAAap/B,EAAQ,KAAMyB,KASxCykB,EAAS/hB,UAAUm7B,YAAc,SAAUngC,GACvCmI,KAAKi4B,0BAA0BpgC,EAAK,WAExC+mB,EAAS/hB,UAAUi7B,aAAe,SAAUp/B,EAAQb,EAAKsC,EAAO+9B,QAC3C,IAAbA,IAAuBA,GAAW,GA6BtC,IAAK,IA5BDt7B,EAAU,SAAUvF,GACpB,IAAKK,oBAAkBgB,EAAOrB,GAAGyB,YAAa,CAC1C,IAAIq/B,EAAcz/B,EAAOrB,GAAGyB,WAAWE,SACnCF,EAAas/B,EAAO56B,SAASC,OAAO,SAAUC,GAC9C,OAAOA,EAAE1E,WAAam/B,IAEtB1hC,EAAa2hC,KACbt/B,EAAas/B,EAAOj8B,wBAAwBsB,OAAO,SAAUC,GACzD,OAAOA,EAAE1E,WAAam/B,MAGC,IAA3Br/B,EAAW,GAAGK,UACdT,EAAOF,KAAKM,EAAW,IACvBA,EAAW,GAAGK,UAAW,GAGpBV,EAAgB2/B,EAAQt/B,EAAW,GAAIs/B,EAAO76B,aAC3CzE,EAAW,GAAGK,eAAyC0kB,IAA7B/kB,EAAW,GAAGA,YACxCJ,EAAOF,KAAKM,EAAW,IAKlCo/B,GACDE,EAAOvB,UAAU,KAAMn+B,EAAOrB,GAAIQ,EAAKsC,IAG3Ci+B,EAASp4B,KACJ3I,EAAI,EAAGA,EAAIqB,EAAOnB,OAAQF,IAC/BuF,EAAQvF,GAER6gC,GACAl4B,KAAK62B,UAAU,KAAMn+B,EAAQb,EAAKsC,IAG1CykB,EAAS/hB,UAAUk7B,iBAAmB,SAAU59B,GAC5C,IAAI8N,EAAOjI,KAAKnB,UAAUpB,OAAO,SAAUC,GACvC,OAAkD,IAA1CA,EAAE+O,UAAUjO,QAAQ,QAAUrE,KAC9BuD,EAAEuN,cAAc,wBAA0BvN,EAAEuN,cAAc,wBAMtE,OADY/S,QAHE8H,KAAK7D,wBAAwBsB,OAAO,SAAUC,GACxD,OAAOA,EAAEvD,QAAUA,GAASuD,EAAErE,kBAEJ4O,KAAMA,IASxC2W,EAAS/hB,UAAUw7B,gBAAkB,SAAUl+B,GAC3C,IAAM6F,KAAK+Q,aAAkD,QAAnC/Q,KAAKgR,aAAaC,cAA2BjR,KAAK5B,wBAA0B3H,EAAauJ,MAAO,CACtH,IAAItH,EAASsH,KAAKrI,KAAKhB,WAAW8G,OAAO,SAAUC,GAI/C,OAHIA,EAAErE,iBAAmBqE,EAAEvD,QAAUA,IACjCuD,EAAEvE,UAAW,GAEVuE,EAAErE,iBAAmBqE,EAAEvD,QAAUA,IAE5C6F,KAAKs4B,eAAe5/B,EAAQ,MAAM,OAEjC,CACD,IAAIoW,EAAM9O,KAAK+3B,iBAAiB59B,GAC5BjC,EAAUK,YAAU,UAAWuW,GACnC9O,KAAKs4B,eAAepgC,KAS5B0mB,EAAS/hB,UAAU07B,cAAgB,SAAU1gC,GACzCmI,KAAKi4B,0BAA0BpgC,EAAK,aAExC+mB,EAAS/hB,UAAUo7B,0BAA4B,SAAUpgC,EAAKyD,GAC1D,IAAIk9B,EAAkBx4B,KAAKzE,0BAA0B,GACjD5E,EAAaF,EAAauJ,MAAQA,KAAK7D,wBAA0B6D,KAAKrI,KAAKhB,WAC/E,IAAKe,oBAAkB8gC,GAAkB,CACrC,IAAI1pB,EAAMnY,EAAW8G,OAAO,SAAUC,GAClC,OAAOA,EAAE86B,GAAiBzwB,aAAelQ,EAAIkQ,aAElC,WAAXzM,EACA0E,KAAK83B,aAAahpB,EAAKjX,EAAK,MAG5BmI,KAAKs4B,eAAexpB,EAAKjX,KAIrC+mB,EAAS/hB,UAAUy7B,eAAiB,SAAU5/B,EAAQb,EAAKqgC,GAEvD,QADiB,IAAbA,IAAuBA,GAAW,GAClCA,EACAl4B,KAAK42B,YAAY,KAAMl+B,QAGvB,IAAK,IAAIrB,EAAI,EAAGA,EAAIqB,EAAOnB,OAAQF,IAC/B2I,KAAK42B,YAAY,KAAMl+B,EAAOrB,GAAIQ,GAG1C,IAAKmI,KAAKrI,KAAKkiB,cAAc+W,qBAAuB5wB,KAAK5B,sBAAwB4B,KAAKnB,WAC/EmB,KAAKzC,WAAWhG,SAAWyI,KAAKnB,UAAUtH,OAAQ,CAErDyI,KAAKrI,KAAKkiB,cAAc4e,YAAc,EACtCz4B,KAAKrI,KAAKkiB,cAAsB,UAAK,IAQ7C+E,EAAS/hB,UAAUkmB,UAAY,WAC3B/iB,KAAK04B,kBAAkB,WAO3B9Z,EAAS/hB,UAAUmmB,YAAc,WAC7BhjB,KAAK04B,kBAAkB,aAE3B9Z,EAAS/hB,UAAU67B,kBAAoB,SAAUp9B,GAC7C,IAAI2M,EAAOjI,KAAKnB,UAAUpB,OAAO,SAAUC,GACvC,OAAOA,EAAEuN,cAAc,eAA4B,WAAX3P,EAAsB,WAAa,aAO/E,IALK2M,EAAK1Q,QAAUyI,KAAKnB,UAAUtH,QAC/B0Q,EAAKzP,KAAKwH,KAAKnB,UAAU,IAE7BmB,KAAK8jB,aAAc,EACnB9jB,KAAK+jB,eAAgB,GACf/jB,KAAK+Q,aAAkD,QAAnC/Q,KAAKgR,aAAaC,cAA2BjR,KAAK5B,wBAA0B3H,EAAauJ,OAM/G,GALAA,KAAKxC,SAASC,OAAO,SAAUC,GACvBA,EAAErE,kBACFqE,EAAEvE,SAAsB,aAAXmC,KAGjB2M,EAAK1Q,OACU,aAAX+D,EACA0E,KAAK42B,YAAY3uB,EAAK,IAGtBjI,KAAK62B,UAAU5uB,EAAK,SAGvB,GAAIjI,KAAK+Q,YAAa,CACvB,IAAI4nB,EAAsB34B,KAAKkR,kBAC/BlR,KAAKS,eAAgByQ,mBAAmB,IAAQ,GAChDlR,KAAKrI,KAAK87B,YAAYF,SAAS,GAC/BvzB,KAAKS,eAAgByQ,kBAAmBynB,IAAuB,SAInE,IAAK,IAAIthC,EAAI,EAAGA,EAAI4Q,EAAK1Q,OAAQF,IACd,aAAXiE,EACA0E,KAAK42B,YAAY3uB,EAAK5Q,IAGtB2I,KAAK62B,UAAU5uB,EAAK5Q,IAIhC2I,KAAK8jB,aAAc,EACnB9jB,KAAK+jB,eAAgB,GAEzBnF,EAAS/hB,UAAUm6B,eAAiB,SAAU17B,EAAQqD,EAAKjG,EAAQgf,GAC/D,IAIII,EAJAif,GAAkBp4B,IAAKA,EAAKF,KAAM/F,EAAQsR,aAAenK,YAAavE,GACtEhC,EAAe0G,KAAK7D,wBAAwBsB,OAAO,SAAUC,GAC7D,OAAOA,EAAEY,iBAAmB5F,EAAOM,YAGlCvC,EAAauJ,OAAoB,WAAX1E,GAAuB0E,KAAKhF,iBAAmB7D,EAAgB6I,QAAU1G,EAAa/B,QAC7GyI,KAAK44B,oBAAoB7B,GAE7B,IAAIpf,EAAW3X,KAAKnB,UACpB,GAAImB,KAAKmT,YAAa,CAClB,IAAIlL,EAAOjI,KAAK4X,kBAAkB3P,KAClC0P,KAAclP,MAAM1L,KAAKkL,GAa7B,GAVIvQ,oBAAkBiH,GAElBA,EAAMgZ,EADK3X,KAAK7D,wBAAwBqC,QAAQ9F,KAIpCiG,EAAI0N,aAAa,iBAE5B3U,oBAAkBiH,IACnBA,EAAIuO,aAAa,gBAA4B,WAAX5R,EAAsB,OAAS,WAE/D0E,KAAK+Q,aAAkD,QAAnC/Q,KAAKgR,aAAaC,cAA2BjR,KAAK5B,uBAA0B3H,EAAauJ,OAC3G7I,EAAgB6I,MAGnB,CACD,IAAI64B,OAAgB,EACpB,GAAe,WAAXv9B,EAAqB,CAarB,GAZAu9B,EAAgB,YACXnhB,IACDhf,EAAOS,UAAW,EAClB6G,KAAK6e,mBAAmBnmB,EAAOM,UAAUG,SAAWT,EAAOS,UAE1DzB,oBAAkBiH,KACnBmZ,EAAYnZ,EAAIoZ,uBAAuB,sBAAsB,IAE7DL,IAAYhgB,oBAAkBgB,EAAOsH,KAAK9G,sBAC1CR,EAAOsH,KAAK9G,qBAAuBxB,oBAAkBogB,KACrDA,EAAYnZ,EAAIoZ,uBAAuB,oBAAoB,IAE3DrgB,oBAAkBogB,GAClB,OAECA,EAAUvP,UAAUC,SAAS,qBAC9B8H,YAAUwH,GAAY,oBAE1BvK,eAAauK,GAAY,0BAExB,CAaD,GAZA+gB,EAAgB,OACXnhB,IAAWvgB,EAAgB6I,QAC5BtH,EAAOS,UAAW,EAClB6G,KAAK6e,mBAAmBnmB,EAAOM,UAAUG,SAAWT,EAAOS,UAE1DzB,oBAAkBiH,KACnBmZ,EAAYnZ,EAAIoZ,uBAAuB,oBAAoB,IAE3DL,IAAYhgB,oBAAkBgB,EAAOsH,KAAK9G,uBACzCR,EAAOsH,KAAK9G,qBAAuBxB,oBAAkBogB,KACtDA,EAAYnZ,EAAIoZ,uBAAuB,sBAAsB,IAE7DrgB,oBAAkBogB,GAClB,OAECA,EAAUvP,UAAUC,SAAS,uBAC9B8H,YAAUwH,GAAY,sBAE1BvK,eAAauK,GAAY,oBAE7B,IAAIghB,EAAanhB,EAASla,OAAO,SAAUkE,GACvC,OAAOA,EAAE4G,UAAUC,SAAS,uBAAyB9P,EAAOwB,MAAQ,SAAWxB,EAAOyB,MAAQ,MAUlG,GARI1D,EAAauJ,QAAUxG,EAAUwG,MACjCA,KAAKqF,aAAa/J,EAAQqD,EAAKjG,GAGzBvB,EAAgB6I,QAAS1G,EAAa/B,QAAsB,aAAX+D,GACnD0E,KAAK+4B,YAAYz9B,EAAQqD,EAAKjG,GAGlCsH,KAAK2rB,kBAAoBhtB,EAAIe,MAAM,GAAG6I,UAAUC,SAAS,iBAIzD,IAAK,IAHDwjB,EAAYhsB,KAAKnB,UAGZxH,GAFL4Q,EAAOjI,KAAK4X,kBAAkB3P,MAClC+jB,KAAevjB,MAAM1L,KAAKkL,IACH1Q,OAAS,GAAGF,EAAI,EAAGA,IACtC,IAAKiD,EAAS0xB,EAAU30B,IAAK,CACzB,IACI2hC,EADQh5B,KAAK4X,kBACG6f,aAChBwB,EAAej5B,KAAK01B,aAAauD,aACrCj5B,KAAKwrB,cAAcQ,EAAU30B,GAAI2hC,GAAWC,GAC5C,MAIZj5B,KAAK+S,OAAO,qBAAuB+lB,WAAYA,EAAYx9B,OAAQu9B,EAAengC,OAAQA,EAAQiG,IAAKA,IACvGqB,KAAK8rB,aAAanU,QAxElB3X,KAAK+S,OAAOmmB,GAAmC59B,OAAQA,EAAQqD,IAAKA,EAAKjG,OAAQA,KA2EzFkmB,EAAS/hB,UAAU+7B,oBAAsB,SAAU7B,GAC/C,IAAIxvB,EAAQvH,KACRm5B,EAAO,IAAIhN,WAEf4K,EAA2B,cAAIoC,EAAK9M,QACpC,IAAI3zB,EAASq+B,EAAct4B,KAC3BuB,KAAKoJ,QAAQ0jB,EAAwBiK,GACrCoC,EAAK7L,QAAQvX,KAAK,WACd,GAAIghB,EAAc/sB,UAAUzS,OAAQ,CAGhC,IAAK,IAFD+iB,EAAe/S,EAAc,SAC7BrN,EAAQ,EACH7C,EAAI,EAAGA,EAAIijB,EAAY/iB,OAAQF,IACpC,GAAIijB,EAAYjjB,GAAG+C,WAAa1B,EAAO0B,SAAU,CAC7CF,EAAQ7C,EACR,MAOH,IAJD+hC,EAAS/6B,WAAS,SAAUkJ,EAAM5Q,YAClCqT,EAAYrQ,EAAYo9B,EAAc/sB,WACtCqvB,EAAW3gC,EAAO6O,EAAMnK,eAAgB1E,EAAO6O,EAAMnK,cAAc7F,OAASyS,EAAUzS,OACtFmB,EAAO6O,EAAMnK,cAAc7F,OAA4ByS,EAAUzS,OACrE,IAASF,EAAI,EAAGA,EAAIgiC,EAAUhiC,IACtBqB,EAAO6O,EAAMnK,eACbg8B,EAAO37B,OAAO,SAAUC,EAAGrG,GACnBqG,EAAE6J,EAAMtK,mBAAqBvE,EAAO6O,EAAMrK,YAC1Ck8B,EAAOj8B,OAAO9F,EAAG,KAIzB2S,EAAU3S,IACV2S,EAAU3S,GAAG8C,MAAQzB,EAAOyB,MAAQ,EACpC6P,EAAU3S,GAAG6C,MAAQod,KAAKC,KAAqB,IAAhBD,KAAKE,UACpCxN,EAAU3S,GAAGyB,WAAasD,YAAW1D,GACrCsR,EAAU3S,GAAG+C,SAAWgC,YAAW4N,EAAU3S,WACtC2S,EAAU3S,GAAGyB,WAAWQ,oBACxB0Q,EAAU3S,GAAG+C,SAAStB,WAC7BkR,EAAU3S,GAAGiH,eAAiB5F,EAAOM,SACrCgR,EAAU3S,GAAG2B,SAAWqe,SAAO9P,EAAMsM,QAAQC,GAAK,UAClDsC,WAAS,sBAAwBpM,EAAU3S,GAAG2B,SAAUgR,EAAU3S,GAAIkQ,KACjE7P,oBAAkBsS,EAAU3S,GAAGkQ,EAAMnK,gBACrC4M,EAAU3S,GAAGkQ,EAAMmO,kBAAoBve,EAAgBoQ,MACxDyC,EAAU3S,GAAGgC,iBAAkB,GAEnCihB,EAAYnd,OAAOjD,EAAQ,EAAI7C,EAAGqB,EAAO6O,EAAMnK,eAAiB1E,EAAO6O,EAAMnK,cAAc/F,GAAK,EAAI,EAAG2S,EAAU3S,KAGjHijB,EAAYnd,OAAOjD,EAAQ,EAAI7C,EAAG,GAG1CijB,EAAYpgB,GAAOqN,EAAMnK,cAAgB4M,EACzCsQ,EAAYpgB,GAAOZ,aAAe0Q,EAClCsQ,EAAYpgB,GAAOf,UAAW,EAC9Bid,WAAS,sBAAwBkE,EAAYpgB,GAAOlB,SAAUshB,EAAYpgB,GAAQqN,GAClF,IAAK,IAAIxN,EAAI,EAAGA,EAAIg9B,EAAc/sB,UAAUzS,OAAQwC,IAChDq/B,EAAO5gC,KAAKu+B,EAAc/sB,UAAUjQ,IAG5CwN,EAAMslB,iBAAkB,EACxBtlB,EAAM5P,KAAK82B,UACXlnB,EAAM4vB,4BACN5vB,EAAM6B,QAAQwQ,EAAiBmd,MAGvCnY,EAAS/hB,UAAUwI,aAAe,SAAU/J,EAAQqD,EAAKjG,GACrD,IAAIif,EAAW3X,KAAKnB,UACpB,GAAImB,KAAKmT,YAAa,CAClB,IAAImmB,EAASt5B,KAAK4X,kBAAkB3P,KACpC0P,KAAclP,MAAM1L,KAAKu8B,GAE7B,IAAIp2B,GAASzE,KAAM/F,EAAQiG,IAAKA,GAC5BsJ,KAIJ,GAHAA,EAAO0P,EAASla,OAAO,SAAUkE,GAC7B,OAAOA,EAAEsJ,cAAc,kBAAoBvS,EAAOwB,MAAQ,SAAWxB,EAAOyB,MAAQ,MAEzE,WAAXmB,EAAqB,CACrB0E,KAAK+S,OAAO+B,GAAuBpc,OAAQA,EAAQuP,KAAMA,EAAMiQ,UAAWvZ,IAC1E,IAAI46B,GAAW56B,IAAKA,EAAKF,KAAM/F,GAC3BuP,EAAK1Q,OAAS,IACdyI,KAAKm3B,4BACLn3B,KAAKoJ,QAAQwQ,EAAiB2f,SAIlCv5B,KAAKw5B,qBAAsB9gC,OAAQA,EAAQuP,KAAMA,IACjDjI,KAAKm3B,4BACLn3B,KAAKoJ,QAAQmuB,EAAkBr0B,IAGvC0b,EAAS/hB,UAAUk8B,YAAc,SAAUz9B,EAAQqD,EAAKjG,GACpD,IAAIuP,EACA3O,EAAe0G,KAAK7D,wBAAwBsB,OAAO,SAAUC,GAC7D,OAAOA,EAAEY,iBAAmB5F,EAAOM,WAEnCgH,KAAK2rB,iBAAmBhtB,EAAIe,MAAM,GAAG6I,UAAUC,SAAS,kBACxDxI,KAAKwrB,cAAc7sB,GAAK,GAE5B,IAAI86B,EACAC,EACA/hB,EAAW3X,KAAKnB,UACpB,GAAImB,KAAKmT,YAAa,CAClB,IAAIwmB,EAAS35B,KAAK4X,kBAAkB3P,KACpC0P,KAAclP,MAAM1L,KAAK48B,GAE7B,IAAId,EAA4B,WAAXv9B,EAAuB,YAAc,OACtDk9B,EAAkBx4B,KAAKzE,0BAA0B,GACrD,GAAIyE,KAAKV,sBAAwBU,KAAK+Q,YAAa,CAC/C9I,KACA,IAAK,IAAI5Q,EAAI,EAAGA,EAAIiC,EAAa/B,OAAQF,IAAK,CAC1C,IAAIwS,EAAW7J,KAAKrI,KAAKmH,wBAAwBxF,EAAajC,GAAGmhC,IACjEvwB,EAAKzP,KAAKwH,KAAKnB,UAAUgL,UAI7B5B,EAAO0P,EAASla,OAAO,SAAUkE,GAC7B,OAAOA,EAAEsJ,cAAc,kBAAoBvS,EAAOwB,MAAQ,SAAWxB,EAAOyB,MAAQ,MAG5F,IAAIi9B,EAAUp3B,KAAKrI,KAAK2a,4BAA8B,GAAKtS,KAAKrI,KAAK4a,6BAA+B,GAChGvS,KAAKhB,YAAcgB,KAAK2R,eAAiB3R,KAAKf,oBAAsBm4B,KACpEqC,EAAcz5B,KAAK45B,iBAAiBn8B,OAAO,SAAUkE,GACjD,OAAOA,EAAEsJ,cAAc,kBAAoBvS,EAAOwB,MAAQ,SAAWxB,EAAOyB,MAAQ,OAGxFi9B,IACAsC,EAAkB15B,KAAK65B,qBAAqBp8B,OAAO,SAAUkE,GACzD,OAAOA,EAAEsJ,cAAc,kBAAoBvS,EAAOwB,MAAQ,SAAWxB,EAAOyB,MAAQ,OAG5F,IAAS9C,EAAI,EAAGA,EAAI4Q,EAAK1Q,OAAQF,IACxBK,oBAAkBuQ,EAAK5Q,MACxB4Q,EAAK5Q,GAAGmD,MAAMG,QAAUk+B,GAEvBnhC,oBAAkB+hC,KACnBA,EAAYpiC,GAAGmD,MAAMG,QAAUk+B,GAE9BnhC,oBAAkBgiC,KACnBA,EAAgBriC,GAAGmD,MAAMG,QAAUk+B,GAEvC74B,KAAK+S,OAAO,kBAAoBpU,IAAKsJ,EAAK5Q,KACrCK,oBAAkB4B,EAAajC,GAAGiC,eAA6B,WAAXgC,IACrD5D,oBAAkB4B,EAAajC,GAAG8B,YAAaG,EAAajC,GAAG8B,WAC/D6G,KAAKg3B,eAAe17B,EAAQ2M,EAAK5Q,GAAIiC,EAAajC,IAAI,GAClD2I,KAAK2R,eAAiB3R,KAAKZ,kBAAoB1H,oBAAkB+hC,IACjEz5B,KAAKg3B,eAAe17B,EAAQm+B,EAAYpiC,GAAIiC,EAAajC,IAAI,KAK7EunB,EAAS/hB,UAAUivB,aAAe,SAAU7jB,GACxC,GAAIjI,KAAKgoB,eAAiBhoB,KAAKmT,YAE3B,IAAK,IADD2mB,EAAkB,EACbziC,EAAI,EAAG4Q,GAAQ5Q,EAAI4Q,EAAK1Q,OAAQF,IAAK,CAC1C,IAAI0iC,EAAU9xB,EAAK5Q,GACW,SAA1B0iC,EAAQv/B,MAAMG,UACVo/B,EAAQxxB,UAAUC,SAAS,aAC3B+E,eAAawsB,GAAU,YAEvBD,EAAkB,GAAM,GAAMC,EAAQxxB,UAAUC,SAAS,iBAAoBuxB,EAAQxxB,UAAUC,SAAS,gBACxG8H,YAAUypB,GAAU,YAEnBA,EAAQxxB,UAAUC,SAAS,iBAAoBuxB,EAAQxxB,UAAUC,SAAS,gBAC3EsxB,OAMpBlb,EAAS/hB,UAAUixB,sBAAwB,WACvC,GAAI9tB,KAAKmT,YAAa,CAClB,IAAIlL,EAAOjI,KAAK4X,kBAAkB3P,KAClCA,KAAUQ,MAAM1L,KAAKkL,GACrB,IAAK,IAAI5Q,EAAI,EAAGA,EAAI4Q,EAAK1Q,OAAQF,IAAK,CAClC,IAAI2iC,EAAQh6B,KAAKrI,KAAKigB,kBAAkB3P,KAAK5Q,GAAGqI,MAAMM,KAAKZ,iBACvDT,EAAMsJ,EAAK5Q,GAEX4iC,GAAQx7B,KADEuB,KAAKrI,KAAKkhB,gBAAgBxhB,GAAGoH,KAChBE,IAAKA,EAAKc,KAAMu6B,EAAOr6B,OAAQK,KAAKJ,aAAaI,KAAKZ,kBACjFY,KAAKT,aAAaC,WAAWy6B,MAIzCrb,EAAS/hB,UAAU28B,oBAAsB,SAAU/hB,EAAYC,GACtDA,IACDD,EAAW/e,OAAOS,UAAW,GAEjC,IACIwF,EACAkZ,EAFA5P,EAAOwP,EAAWxP,KAGlBiyB,KACAC,KACA/C,EAAUp3B,KAAKsS,4BAA8B,GAAKtS,KAAKuS,6BAA+B,EACtF6kB,IACA8C,EAAcl6B,KAAK45B,iBAAiBn8B,OAAO,SAAUkE,GACjD,OAAOA,EAAEsJ,cAAc,kBAAoBwM,EAAW/e,OAAOwB,MAAQ,SAAWud,EAAW/e,OAAOyB,MAAQ,MAE9GggC,EAAYn6B,KAAK65B,qBAAqBp8B,OAAO,SAAUkE,GACnD,OAAOA,EAAEsJ,cAAc,kBAAoBwM,EAAW/e,OAAOwB,MAAQ,SAAWud,EAAW/e,OAAOyB,MAAQ,OAGlH,IAAK,IAAI9C,EAAI,EAAGA,EAAI4Q,EAAK1Q,OAAQF,IAAK,CAClC4Q,EAAK5Q,GAAGmD,MAAMG,QAAU,OACxBgE,EAAMsJ,EAAK5Q,GACX,IAAI+iC,EAAenyB,EAAK5Q,GAAG4T,cAAc,sBAgBzC,GAfKvT,oBAAkB0iC,IACnBp6B,KAAKrI,KAAKygB,gBAAgBiiB,SAASD,GAEnChD,IACA8C,EAAY7iC,GAAGmD,MAAMG,QAAU,OAC/Bw/B,EAAU9iC,GAAGmD,MAAMG,QAAU,OACxBsN,EAAK5Q,GAAG4T,cAAc,+CACnBivB,EAAY7iC,GAAG4T,cAAc,6CAC7BtM,EAAMu7B,EAAY7iC,GAEb8iC,EAAU9iC,GAAG4T,cAAc,+CAChCtM,EAAMw7B,EAAU9iC,MAIxBsH,EAAIsM,cAAc,6CAA8C,CAChE,IAAIqvB,EAAgB37B,EAAIsM,cAAc,6CACtC4M,EAAc7X,KAAKmT,YAAcnT,KAAKrI,KAAKwE,wBAAwB8L,EAAK5Q,GAAGwS,UACvE7J,KAAKrI,KAAKqgB,oBAAoB/P,EAAK5Q,GAAGgV,aAAa,aAAa5N,MAC/D/G,oBAAkB4iC,IAAkBziB,EAAY1e,WACjDoU,eAAa+sB,GAAgB,oBAC7BhqB,YAAUgqB,GAAgB,uBAI9B,IAAK,IAFDC,KACAC,EAAQx6B,KAAKnB,UACR47B,EAAM,EAAGA,EAAMD,EAAMjjC,OAAQkjC,IAC9BD,EAAMC,GAAKxvB,cAAc,kBAAoB4M,EAAY3d,MAAQ,SAAW2d,EAAY1d,MAAQ,KAChGogC,EAAK/hC,KAAKgiC,EAAMC,IAGpBF,EAAKhjC,QAAUsgB,EAAY1e,UAC3B6G,KAAKw5B,qBAAsB9gC,OAAQmf,EAAa5P,KAAMsyB,IAAQ,MAS9E3b,EAAS/hB,UAAUkqB,YAAc,WAC7B/mB,KAAKsK,GAAG,gBAAiBtK,KAAK06B,kBAAmB16B,MACjDA,KAAKrI,KAAK2S,GAAG,cAAetK,KAAKunB,gBAAiBvnB,OAEtD4e,EAAS/hB,UAAU69B,kBAAoB,SAAUC,GAC7C36B,KAAK0U,YAAcimB,GAMvB/b,EAAS/hB,UAAUq0B,eAAiB,WAC5BlxB,KAAK4K,cAGT5K,KAAK6K,IAAI,gBAAiB7K,KAAK06B,mBAC/B16B,KAAKrI,KAAKkT,IAAI,cAAe7K,KAAKunB,mBAiBtC3I,EAAS/hB,UAAU+9B,eAAiB,SAAUpI,EAAWqI,EAAgBC,EAAaC,EAAWC,EAAWC,EAAcC,EAAmBC,GACzIn7B,KAAKrI,KAAKijC,eAAepI,EAAWqI,EAAgBC,EAAaC,EAAWC,EAAWC,EAAcC,EAAmBC,IAO5Hvc,EAAS/hB,UAAUu+B,eAAiB,WAChCp7B,KAAKrI,KAAKyjC,kBAUdxc,EAAS/hB,UAAUw+B,0BAA4B,SAAUvoB,EAAOwoB,GAC5Dt7B,KAAKrI,KAAK0jC,0BAA0BvoB,EAAOwoB,IAS/C1c,EAAS/hB,UAAUumB,UAAY,SAAUlpB,EAAOqhC,GAC5Cv7B,KAAKrI,KAAKyrB,UAAUlpB,EAAOqhC,IAQ/B3c,EAAS/hB,UAAU2+B,WAAa,SAAU1tB,GACtC9N,KAAKrI,KAAK6jC,WAAW1tB,IAOzB8Q,EAAS/hB,UAAU0mB,eAAiB,WAChCvjB,KAAKrI,KAAK4rB,kBAQd3E,EAAS/hB,UAAU8M,KAAO,SAAU/B,GAChC5H,KAAKU,gBAAgBiJ,KAAK/B,IAU9BgX,EAAS/hB,UAAU+M,MAAQ,SAAUnL,EAAMoL,EAAUC,GACjD9J,KAAKU,gBAAgBkJ,MAAMnL,EAAMoL,EAAUC,IAS/C8U,EAAS/hB,UAAU4+B,WAAa,SAAUpY,EAAWkY,GACjDv7B,KAAKrI,KAAK8jC,WAAWpY,EAAWkY,IAOpC3c,EAAS/hB,UAAU6+B,gBAAkB,WACjC,OAAO17B,KAAKrI,KAAK+jC,mBASrB9c,EAAS/hB,UAAU8+B,wBAA0B,SAAU9xB,EAAUoC,GAC7D,OAAOjM,KAAKrI,KAAKgkC,wBAAwB9xB,EAAUoC,IAOvD2S,EAAS/hB,UAAUwS,mBAAqB,WACpC,OAAOrP,KAAKrI,KAAK0X,sBAQrBuP,EAAS/hB,UAAUqC,qBAAuB,SAAUhF,GAChD,OAAO8F,KAAKrI,KAAKuH,qBAAqBhF,IAO1C0kB,EAAS/hB,UAAU+8B,eAAiB,WAChC,OAAO55B,KAAKrI,KAAKiiC,kBAQrBhb,EAAS/hB,UAAU++B,yBAA2B,SAAU1hC,GACpD,OAAO8F,KAAKrI,KAAKikC,yBAAyB1hC,IAO9C0kB,EAAS/hB,UAAUg9B,mBAAqB,WACpC,OAAO75B,KAAKrI,KAAKkiC,sBAOrBjb,EAAS/hB,UAAUg/B,uBAAyB,WACxC,OAAO77B,KAAKrI,KAAKkkC,0BASrBjd,EAAS/hB,UAAUi/B,4BAA8B,SAAUjyB,EAAUoC,GACjE,OAAOjM,KAAKrI,KAAKmkC,4BAA4BjyB,EAAUoC,IAQ3D2S,EAAS/hB,UAAUk/B,iCAAmC,SAAU7hC,GAC5D,OAAO8F,KAAKrI,KAAKokC,iCAAiC7hC,IAQtD0kB,EAAS/hB,UAAUm/B,kCAAoC,SAAU9hC,GAC7D,OAAO8F,KAAKrI,KAAKqkC,kCAAkC9hC,IAQvD0kB,EAAS/hB,UAAUo/B,8BAAgC,SAAU/hC,GACzD,OAAO8F,KAAKrI,KAAKskC,8BAA8B/hC,IAMnD0kB,EAAS/hB,UAAUq/B,uBAAyB,WACxC,OAAOl8B,KAAKrI,KAAKukC,0BAMrBtd,EAAS/hB,UAAUyV,0BAA4B,WAC3C,OAAOtS,KAAKrI,KAAK2a,6BAMrBsM,EAAS/hB,UAAU0V,2BAA6B,WAC5C,OAAOvS,KAAKrI,KAAK4a,8BAMrBqM,EAAS/hB,UAAU8V,qBAAuB,WAEtC,OADA3S,KAAKkiB,kBAAkBliB,KAAKrI,KAAKgb,wBAC1B3S,KAAK6jB,aAMhBjF,EAAS/hB,UAAU4V,sBAAwB,WAEvC,OADAzS,KAAKkiB,kBAAkBliB,KAAKrI,KAAK8a,yBAC1BzS,KAAK6jB,aAMhBjF,EAAS/hB,UAAUs/B,uBAAyB,WACxC,OAAOn8B,KAAKrI,KAAKwkC,0BAMrBvd,EAAS/hB,UAAUu/B,2BAA6B,WAC5C,OAAOp8B,KAAKrI,KAAKykC,8BAMrBxd,EAAS/hB,UAAUw/B,0BAA4B,WAC3C,OAAOr8B,KAAKrI,KAAK0kC,6BAMrBzd,EAAS/hB,UAAUgW,kBAAoB,WAEnC,OADA7S,KAAKkiB,kBAAkBliB,KAAKrI,KAAKkb,qBAC1B7S,KAAK6jB,aAQhBjF,EAAS/hB,UAAUoC,iBAAmB,WAClC,OAAOe,KAAKs8B,eAAet8B,KAAK1I,QAAS,GAAK0I,KAAK2R,eAEvDiN,EAAS/hB,UAAUy/B,eAAiB,SAAUpG,EAAMqG,GAChD,IAAK,IAAIxiC,EAAI,EAAG3B,EAAM89B,EAAK3+B,OAAQwC,EAAI3B,EAAK2B,IACpCm8B,EAAKn8B,GAAGzC,QACRilC,EAAMv8B,KAAKs8B,eAAepG,EAAKn8B,GAAGzC,QAASilC,GAGvCrG,EAAKn8B,GAAGyiC,UACRD,IAIZ,OAAOA,GAOX3d,EAAS/hB,UAAUuL,sBAAwB,WACvC,OAAOpI,KAAKrI,KAAKyQ,yBAOrBwW,EAAS/hB,UAAU4/B,0BAA4B,WAC3C,OAAOz8B,KAAKrI,KAAK8kC,6BAQrB7d,EAAS/hB,UAAU+L,mBAAqB,WACpC,OAAO5I,KAAKrI,KAAKiR,sBAOrBgW,EAAS/hB,UAAUyb,cAAgB,WAC/B,OAASokB,WAAY18B,KAAKrI,KAAK2gB,gBAAiBqkB,WAAY38B,KAAKymB,aAUrE7H,EAAS/hB,UAAU+/B,YAAc,SAAUC,EAAaC,EAAS3K,GAC7DnyB,KAAK+8B,qBAAqBH,YAAYC,EAAaC,EAAS3K,IAEhE,IAAI3S,EAiYJ,OAhYAne,IACIc,WAAS,IACVyc,EAAS/hB,UAAW,kBAAc,GACrCwE,IACIc,WAAS,IACVyc,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACIc,WAAS,aACVyc,EAAS/hB,UAAW,gBAAY,GACnCwE,IACIc,gBACDyc,EAAS/hB,UAAW,eAAW,GAClCwE,IACIc,WAAS,OACVyc,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACIc,WAAS,OACVyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,WAAS,IACVyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,WAAS,OACVyc,EAAS/hB,UAAW,iBAAa,GACpCwE,IACIc,WAAS,OACVyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACIc,WAAS,OACVyc,EAAS/hB,UAAW,0BAAsB,GAC7CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,2BAAuB,GAC9CwE,IACIc,gBACDyc,EAAS/hB,UAAW,kBAAc,GACrCwE,IACIc,cACDyc,EAAS/hB,UAAW,aAAS,GAChCwE,IACIc,cACDyc,EAAS/hB,UAAW,kBAAc,GACrCwE,IACIc,WAAS,aACVyc,EAAS/hB,UAAW,iBAAa,GACpCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,mBAAe,GACtCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACI27B,aAAYz6B,IACbqc,EAAS/hB,UAAW,wBAAoB,GAC3CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,0BAAsB,GAC7CwE,IACI27B,aAAYlgB,KACb8B,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACI27B,aAAYC,oBACbre,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,cACDyc,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACI27B,aAAYte,KACbE,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACIiB,gBAAeic,KAChBK,EAAS/hB,UAAW,kBAAc,GACrCwE,IACI27B,aAAYxe,KACbI,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACIc,cACDyc,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI27B,aAAY36B,IACbuc,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI27B,aAAYxsB,KACboO,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACIc,cACDyc,EAAS/hB,UAAW,eAAW,GAClCwE,IACIc,cACDyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,WAAS,YACVyc,EAAS/hB,UAAW,iBAAa,GACpCwE,IACIc,cACDyc,EAAS/hB,UAAW,wBAAoB,GAC3CwE,IACIc,cACDyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACIc,cACDyc,EAAS/hB,UAAW,mBAAe,GACtCwE,IACIc,WAAS,WACVyc,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACIc,WAAS,OACVyc,EAAS/hB,UAAW,iBAAa,GACpCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,mBAAe,GACtCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,wBAAoB,GAC3CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,2BAAuB,GAC9CwE,IACIc,WAAS,SACVyc,EAAS/hB,UAAW,cAAU,GACjCwE,IACIc,WAAS,SACVyc,EAAS/hB,UAAW,aAAS,GAChCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,4BAAwB,GAC/CwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,kCAA8B,GACrDwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,+BAA2B,GAClDwE,IACI27B,aAAYre,KACbC,EAAS/hB,UAAW,8BAA0B,GACjDwE,IACIc,WAAS,QACVyc,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,eAAW,GAClCwE,IACI67B,WACDte,EAAS/hB,UAAW,YAAQ,GAC/BwE,IACI67B,WACDte,EAAS/hB,UAAW,iBAAa,GACpCwE,IACI67B,WACDte,EAAS/hB,UAAW,gBAAY,GACnCwE,IACI67B,WACDte,EAAS/hB,UAAW,kBAAc,GACrCwE,IACI67B,WACDte,EAAS/hB,UAAW,iBAAa,GACpCwE,IACI67B,WACDte,EAAS/hB,UAAW,gBAAY,GACnCwE,IACI67B,WACDte,EAAS/hB,UAAW,iBAAa,GACpCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,iBAAa,GACpCwE,IACI67B,WACDte,EAAS/hB,UAAW,gBAAY,GACnCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,gBAAY,GACnCwE,IACI67B,WACDte,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACI67B,WACDte,EAAS/hB,UAAW,iBAAa,GACpCwE,IACI67B,WACDte,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,yBAAqB,GAC5CwE,IACI67B,WACDte,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACIc,YAAS,IACVyc,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,gBAAY,GACnCwE,IACI67B,WACDte,EAAS/hB,UAAW,kBAAc,GACrCwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,kBAAc,GACrCwE,IACI67B,WACDte,EAAS/hB,UAAW,kBAAc,GACrCwE,IACI67B,WACDte,EAAS/hB,UAAW,sBAAkB,GACzCwE,IACI67B,WACDte,EAAS/hB,UAAW,qBAAiB,GACxCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,uBAAmB,GAC1CwE,IACI67B,WACDte,EAAS/hB,UAAW,wBAAoB,GAC3CwE,IACI67B,WACDte,EAAS/hB,UAAW,kBAAc,GACrCwE,IACI67B,WACDte,EAAS/hB,UAAW,mBAAe,GACtCwE,IACI67B,WACDte,EAAS/hB,UAAW,eAAW,GAClCwE,IACI67B,WACDte,EAAS/hB,UAAW,oBAAgB,GACvCwE,IACI67B,WACDte,EAAS/hB,UAAW,0BAAsB,GAC7CwE,IACI67B,WACDte,EAAS/hB,UAAW,eAAW,GAClCwE,IACIc,YAAU,IACXyc,EAAS/hB,UAAW,wBAAoB,GAC3CwE,IACI2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"}