{"version":3,"file":"kendo.propertygrid.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendopropertygrid","js","this","$","undefined$1","kendo","window","TreeListContextMenu","ui","treelist","ContextMenu","extend","PropertyGridContextMenu","init","element","options","fn","call","defaultItems","separator","name","copy","text","icon","command","softRules","copyName","copyDeclaration","resize","rules","reset","expandItem","collapseItem","propertygrid","jQuery","Class","keys","Command","propertyGrid","CopyCommand","exec","that","target","closest","dataItem","selectedText","getSelection","getRangeAt","toString","navigator","clipboard","writeText","field","value","_objectFromNodes","tabDelimitedValue","JSON","stringify","description","filter","item","join","ResetCommand","dataSource","cancelChanges","trigger","type","model","container","_render","ResizeColumnCommand","_actionButtonsTemplate","apply","cancel","insertButtonIcon","cancelButtonIcon","html","renderButton","themeColor","dialog","form","tableColumnIndex","index","columnIndex","grouped","columnSelector","oldColumnWidth","table","find","outerWidth","dialogOptions","title","visible","resizable","minWidth","totalWidth","width","e","delta","wrapper","data","formData","columnsize","newColumnWidth","columns","children","eq","column","oldWidth","newWidth","close","preventDefault","destroy","component","colCount","length","widths","idx","push","each","col","adjustColWidths","appendTo","document","body","kendoWindow","_createForm","after","on","end","keyCode","ENTER","ESC","center","open","currentColumnWidth","kendoForm","validation","validateOnBlur","validaitonSummary","renderButtons","items","label","editor","editorOptions","min","ToggleItemCommand","expand","collapse","ToggleGroupLayout","removeClass","_refreshLayout","_updateDetails","ToggleDetails","visibleDetails","toggleClass","ExcelExport","saveAsExcel","PDFExport","saveAsPDF","PropertyGridCommand","commands","NS","kendoDom","dom","kendoDomElement","kendoHtmlElement","kendoTextElement","F10","Editable","TreeList","isArray","Array","isPlainObject","CHANGE","EXPAND","COLLAPSE","GROUP_EXPAND","GROUP_COLLAPSE","CARET_ALT_DOWN","GROUPING_ROW","TR","TD","defaultBodyContextMenu","defaultCommands","group","togglable","showText","commandName","attributes","overflow","details","sort","componentOptions","commandOn","dataTextField","dataValueField","class","search","prefixOptions","placeholder","spacer","excel","pdf","isNullorUndefined","isEditable","PropertyGridDataSource","TreeListDataSource","groupedItemsTree","currentChildren","_childrenMap","view","_defaultParentId","Query","toArray","filterGroupedItemsTree","expression","filterExpression","filters","logic","groups","filterItems","filtered","i","hasChildren","childNodes","filteredGroups","forEach","itm","DynamicInCellEditor","createEditable","fields","editable","clearContainer","change","off","empty","removeAttr","attr","PropertyGrid","_processOptions","_processedModel","_processModel","_createDataSource","_wrapper","_detailsBox","_groupable","notify","hasHeader","groupable","contextMenu","sortable","selectable","scrollable","showDetails","size","defaultTools","messages","defaultGroupName","events","defaultEditors","string","date","number","boolean","_groupContentTemplate","groupName","action","_detailsTemplate","_setEditable","editMode","toolbar","_extendColumnOptions","fieldColumn","valueColumn","_processSettings","obj","settings","flatData","_flatten","_setDefaults","Object","entries","map","x","serverGrouping","schema","id","parentId","expanded","appendNested","result","key","nestedKeys","nestedObject","collectionIdx","nestedKey","flattenObject","propType","collection","nested","flattenCollection","isDate","isComplexObject","tempId","parsed","parseDate","_setDefaultEditor","_createIncellEditor","cell","toJSON","parentColumn","fieldRenderer","_cellContent","bind","_createDirtyTemplate","templateSettings","_customTemplateSettings","template","columnTemplate","incellEditing","_isIncellEditable","isValueColumn","dirtyIndicator","dirty","get","dirtyIndicatorTemplate","format","_editableCellContent","bTag","content","_generateGroupRow","groupRowContent","tdElement","className","colSpan","role","uid","_generateDetailsBox","_renderRows","selected","childrenMap","viewChildrenMap","hasFooterTemplate","selectedRow","_selectedRowUid","rows","prepend","_groupedData","groupTr","concat","_trs","editedColumn","editedColumnIndex","aggregates","level","remove","_contentTree","render","_generateRowOptions","pageable","_renderedModelLevel","isAlt","_absoluteIndex","_renderRow","rowOptions","renderer","row","_tds","groupTdElement","splice","editCell","cellIndex","draggable","isColumnEditable","_editCell","css","addClass","_toolbar","toolbarOptions","_processToolbarItems","_verifyItems","kendoToolBar","navigateOnTab","navigatable","_attachToolbarHandlers","append","toolbarWidget","getKendoToolBar","sortElement","_toolbarClick","getKendoDropDownList","_sortItems","some","hasOwnProperty","findIndex","_getCommandType","toLowerCase","Error","imageClass","spriteCssClass","iconClass","menuButtons","buttons","click","origEvent","event","originalEvent","stopPropagation","_commandClick","currentTarget","ev","val","_action","dir","sender","refresh","_initContextMenu","tbodyContextMenu","mainOptions","tbody","states","_buildStates","isResizable","windowHasSelection","rangeCount","isDirty","isNotInEditMode","hasClass","isNotGroupColumn","isExpandable","isCollapsible","args","commandOptions","rootNodes","hashTable","create","node","childNode","guid","_groupableClickHandler","groupRow","is","_groupRowKeyDown","current","handled","focusElement","_setCurrent","_findCurrentCell","LEFT","RIGHT","altKey","_handleGroupRowExpandCollapse","parent","_toggleGroup","_search","input","clearTimeout","_searchTimeOut","setTimeout","searchFields","operator","select","_","detailsTemplate","detailsContainer","_clearDetails","setDataSource","selectItem","toggleItem","toggleGroup","toggleDetails","edit","saveState","saveChanges","resetState","setOptions","currentOptions","getOptions","_events","deepExtend","before","_setEvents","PropertyGridExcelExporter","ExcelExporter","_trimColumns","allColumns","_leafColumns","_prepareColumn","_visibleColumns","widget","hasGroups","hierarchy","hasGroupHeaderColumn","groupHeaderColumnTemplate","collapsible","_recursiveRows","this$1$1","_dataRow","_depth","itmIdx","_buildGroupedDataRows","groupItem","cells","background","color","_buildDataRows","parents","previousItemId","depth","itemLevel","itemId","hasFooter","_hasFooterTemplate","previousLevel","_hierarchyFooterRows","rootAggregate","_hierarchyFooter","_hierarchyRows","_prependHeaderRows","workbook","Deferred","d","fetch","then","_hierarchy","resolve","promise","PropertyGridExcelMixin","proto","proxyURL","filterable","fileName","exporter","allPages","book","ooxml","Workbook","skipCustomHeight","toDataURLAsync","dataURI","saveAs","forceProxy","_restoreExpandedState","prototype","cssProperties","propertyDictionary","registerPrefix","plugin"],"sources":["kendo.propertygrid.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.menu.js'), require('kendo.excel.js'), require('kendo.progressbar.js'), require('kendo.treelist.js'), require('kendo.dialog.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.menu', 'kendo.excel', 'kendo.progressbar', 'kendo.treelist', 'kendo.dialog'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendopropertygrid = global.kendopropertygrid || {}, global.kendopropertygrid.js = factory()));\n})(this, (function () {\n (function($, undefined$1) {\n const kendo = window.kendo,\n ui = kendo.ui,\n TreeListContextMenu = ui.treelist.ContextMenu,\n extend = $.extend;\n\n let PropertyGridContextMenu = TreeListContextMenu.extend({\n init: function(element, options) {\n const that = this;\n\n TreeListContextMenu.fn.init.call(that, element, options);\n },\n defaultItems: {\n \"separator\": { name: \"separator\", separator: true },\n \"copy\": { name: \"copy\", text: \"Copy\", icon: \"copy\", command: \"CopyCommand\", softRules: \"windowHasSelection\",options: \"copy:selection\" },\n \"copyName\": { name: \"copyName\", text: \"Copy Name\", icon: \"file-txt\", command: \"CopyCommand\", options: \"copy:name\" },\n \"copyDeclaration\": { name: \"copyDeclatarion\", text: \"Copy Declaration\", icon: \"file-data\", command: \"CopyCommand\", options: \"copy:declaration\" },\n \"resize\": { name: \"resize\", text: \"Resize Column\", icon: \"arrows-left-right\", rules: \"isResizable\", command: \"ResizeColumnCommand\",softRules: \"isNotGroupColumn\" },\n \"reset\": { name: \"reset\", text: \"Reset\", icon: \"arrow-rotate-ccw\", command: \"ResetCommand\", rules: \"isEditable\", softRules: \"isDirty;isNotInEditMode\" },\n \"expandItem\": { name: \"expandItem\", text: \"Expand Item\", icon: \"folder-open\", softRules: \"isExpandable\", command: \"ToggleItemCommand\", options: \"expand:true\" },\n \"collapseItem\": { name: \"collapseItem\", text: \"Collapse Item\", icon: \"folder\", softRules: \"isCollapsible\", command: \"ToggleItemCommand\", options: \"expand:false\" }\n }\n });\n\n kendo.ui.propertygrid = kendo.ui.propertygrid || {};\n\n extend(kendo.ui.propertygrid, {\n ContextMenu: PropertyGridContextMenu\n });\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n let kendo = window.kendo,\n extend = $.extend,\n Class = kendo.Class,\n keys = kendo.keys,\n COLUMNSIZE = \"#columnsize\";\n\n let Command = Class.extend({\n init: function(options) {\n this.options = options;\n this.propertyGrid = options.propertyGrid;\n }\n });\n\n let CopyCommand = Command.extend({\n exec: function() {\n const that = this,\n options = that.options,\n propertyGrid = that.propertyGrid,\n target = that.options.target.closest(\"tr\"),\n dataItem = propertyGrid.dataItem(target);\n if (options.copy == \"selection\") {\n let sel = window.getSelection();\n let range = sel.getRangeAt(0);\n let selectedText = range.toString();\n\n navigator.clipboard.writeText(selectedText);\n } else if (options.copy == \"name\") {\n navigator.clipboard.writeText(dataItem.field);\n } else if (options.copy == \"declaration\") {\n let value = that.propertyGrid._objectFromNodes(dataItem);\n let tabDelimitedValue = [dataItem.field, JSON.stringify(value[dataItem.field]), dataItem.description].filter(item => item !== undefined$1).join(\"\\t\");\n navigator.clipboard.writeText(tabDelimitedValue);\n }\n }\n });\n\n let ResetCommand = Command.extend({\n exec: function() {\n let that = this,\n propertyGrid = that.propertyGrid,\n target = that.options.target.closest(\"tr\"),\n dataItem = propertyGrid.dataItem(target);\n\n propertyGrid.dataSource.cancelChanges(dataItem);\n propertyGrid.trigger(\"cancel\", { type: \"cancel\", model: dataItem, container: that.options.target });\n propertyGrid._render();\n }\n });\n\n let ResizeColumnCommand = Command.extend({\n _actionButtonsTemplate: function({ apply, cancel, insertButtonIcon, cancelButtonIcon }) {\n return '
' +\n kendo.html.renderButton(``, { themeColor: \"primary\", icon: insertButtonIcon }) +\n kendo.html.renderButton(``, { icon: cancelButtonIcon }) +\n '
';\n },\n\n exec: function() {\n let that = this, dialog, form,\n propertyGrid = that.propertyGrid,\n tableColumnIndex = that.options.target.index(),\n columnIndex = propertyGrid.grouped ? tableColumnIndex - 1 : tableColumnIndex,\n columnSelector = `tr:not(.k-table-group-row):first > td:nth-child(${tableColumnIndex + 1})`,\n oldColumnWidth = propertyGrid.table.find(columnSelector).outerWidth(),\n dialogOptions = {\n title: \"Resize Column\",\n visible: false,\n resizable: true,\n minWidth: 350\n },\n totalWidth = propertyGrid.table.width();\n\n adjustColWidths(that.propertyGrid);\n propertyGrid.table.width(totalWidth);\n\n function apply(e) {\n let delta;\n let oldColumnWidth = dialog.wrapper.find(\".k-form\").data(\"kendoForm\").options.formData.columnsize;\n let newColumnWidth = dialog.wrapper.find(COLUMNSIZE).data(\"kendoNumericTextBox\").value();\n\n if (oldColumnWidth == newColumnWidth) {\n close(e);\n return;\n } else if (oldColumnWidth > newColumnWidth) {\n delta = oldColumnWidth - newColumnWidth;\n propertyGrid.table.width(totalWidth - delta);\n } else {\n delta = newColumnWidth - oldColumnWidth;\n propertyGrid.table.width(totalWidth + delta);\n }\n\n propertyGrid.columns[columnIndex].width = newColumnWidth;\n propertyGrid.table.children(\"colgroup\").find(\"col\").eq(tableColumnIndex).width(newColumnWidth);\n\n propertyGrid.trigger(\"columnResize\", {\n column: propertyGrid.columns[columnIndex],\n oldWidth: oldColumnWidth,\n newWidth: newColumnWidth\n });\n\n close(e);\n }\n\n function close(e) {\n e.preventDefault();\n form.destroy();\n dialog.destroy();\n }\n\n function keyDown(e) {\n if (e.keyCode == keys.ENTER) {\n apply(e);\n } else if (e.keyCode == keys.ESC) {\n close(e);\n }\n }\n\n function adjustColWidths(component) {\n const columnSelector = (columnIndex) => `tr:not(.k-table-group-row):first > td:nth-child(${columnIndex + 1})`,\n colCount = component.table.children(\"colgroup\").find(\"col\").length;\n let widths = [];\n for (let idx = 0; idx < colCount; idx++) {\n widths.push(component.table.find(columnSelector(idx)).outerWidth());\n }\n\n component.table.children(\"colgroup\").find(\"col\").each((idx,col) => {\n $(col).width(widths[idx]);\n });\n }\n\n dialogOptions.close = close;\n\n dialog = $(\"
\").appendTo(document.body).kendoWindow(dialogOptions).data(\"kendoWindow\");\n form = that._createForm(dialog, oldColumnWidth);\n dialog.element.after($(that._actionButtonsTemplate({ apply: \"Apply\", cancel: \"Cancel\" , insertButtonIcon: \"check\", cancelButtonIcon: \"cancel-outline\" })));\n\n dialog.wrapper\n .find(\".k-dialog-apply\").on(\"click\", apply).end()\n .find(\".k-dialog-close\").on(\"click\", close).end()\n .find(\".k-form-field input\").on(\"keydown\", keyDown).end();\n\n dialog.center().open();\n },\n\n _createForm: function(dialog, currentColumnWidth) {\n let formElement = $(\"
\").appendTo(dialog.element);\n\n return formElement.kendoForm({\n formData: {\n columnsize: currentColumnWidth\n },\n validation: {\n validateOnBlur: false,\n validaitonSummary: false\n },\n renderButtons: false,\n items: [\n {\n field: \"columnsize\",\n label: \"Set column Size\",\n editor: \"NumericTextBox\",\n editorOptions: {\n min: 0\n }\n }\n ]\n }).data(\"kendoForm\");\n }\n });\n\n let ToggleItemCommand = Command.extend({\n exec: function() {\n let that = this,\n propertyGrid = that.propertyGrid,\n target = that.options.target,\n options = that.options,\n expand = options.expand === 'true';\n\n if (expand) {\n propertyGrid.expand(target);\n } else {\n propertyGrid.collapse(target);\n }\n }\n });\n\n let ToggleGroupLayout = Command.extend({\n exec: function() {\n let that = this,\n propertyGrid = that.propertyGrid,\n grouped = propertyGrid.grouped;\n\n propertyGrid.grouped = !grouped;\n if ( !propertyGrid.grouped) {\n propertyGrid.wrapper.find(\"tr:not(.k-details-box)\").removeClass(\"k-hidden\");\n }\n\n propertyGrid._refreshLayout();\n propertyGrid._updateDetails();\n }\n });\n\n let ToggleDetails = Command.extend({\n exec: function() {\n let that = this,\n propertyGrid = that.propertyGrid,\n visible = propertyGrid.visibleDetails;\n\n propertyGrid.visibleDetails = !visible;\n if ( !propertyGrid.visible) {\n propertyGrid.table.find(\"tr.k-details-box\").toggleClass(\"k-hidden\");\n }\n }\n });\n\n let ExcelExport = Command.extend({\n exec: function() {\n let that = this,\n propertyGrid = that.propertyGrid;\n\n propertyGrid.saveAsExcel();\n }\n });\n\n let PDFExport = Command.extend({\n exec: function() {\n let that = this,\n propertyGrid = that.propertyGrid;\n\n propertyGrid.saveAsPDF();\n }\n });\n\n kendo.ui.propertygrid = kendo.ui.propertygrid || {};\n\n extend(kendo.ui.propertygrid, {\n PropertyGridCommand: Command,\n commands: {\n ResetCommand: ResetCommand,\n CopyCommand: CopyCommand,\n ResizeColumnCommand: ResizeColumnCommand,\n ToggleItemCommand: ToggleItemCommand,\n ToggleGroupLayout: ToggleGroupLayout,\n ToggleDetails: ToggleDetails,\n ExcelExport: ExcelExport,\n PDFExport: PDFExport,\n }\n });\n })(window.kendo.jQuery);\n\n let __meta__ = {\n id: \"propertygrid\",\n name: \"PropertyGrid\",\n category: \"web\",\n description: \"The PropertyGrid widget displays objects as hierarchical structure and provides means to edit the properties and attributes of objects.\",\n depends: [ \"excel\", \"menu\", \"treelist\" ]\n };\n\n (function($, undefined$1) {\n const kendo = window.kendo,\n ui = kendo.ui,\n NS = \".kendoPropertyGrid\",\n extend = $.extend,\n kendoDom = kendo.dom,\n kendoDomElement = kendoDom.element,\n kendoHtmlElement = kendoDom.html,\n kendoTextElement = kendoDom.text,\n keys = $.extend({ F10: 121 }, kendo.keys),\n Editable = ui.Editable,\n TreeList = ui.TreeList,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n CHANGE = \"change\",\n CLICK = \"click\",\n EDIT = \"edit\",\n EXPAND = \"expand\",\n COLLAPSE = \"collapse\",\n GROUP_EXPAND = \"groupExpand\",\n GROUP_COLLAPSE = \"groupCollapse\",\n COLUMNRESIZE = \"columnResize\",\n CELL_CLOSE = \"cellClose\",\n SAVE = \"save\",\n CANCEL = \"cancel\",\n BEFORE_EDIT = \"beforeEdit\",\n PDF_EXPORT = \"pdfExport\",\n CARET_ALT_DOWN = \"a[class*='-i-caret-alt-down']\",\n CARET_ALT_RIGHT = \"a[class*='-i-caret-alt-right']\",\n DOT = \".\",\n GROUPING_ROW = \"k-grouping-row\",\n TR = \"tr\",\n TD = \"td\",\n ARIA_LABEL = \"aria-label\",\n COLLAPSE_ICON = \"caret-alt-down\",\n EXPAND_ICON = \"caret-alt-right\";\n\n const defaultBodyContextMenu = [\n \"copy\",\n \"copyName\",\n \"copyDeclaration\",\n \"separator\",\n \"reset\",\n \"separator\",\n \"resize\",\n \"separator\",\n \"expandItem\",\n \"collapseItem\",\n \"separator\"\n ];\n\n const defaultCommands = {\n group: {\n name: \"group\",\n type: \"button\",\n text: 'Group Items',\n togglable: true,\n showText: \"overflow\",\n icon: \"categorize\",\n commandName: \"ToggleGroupLayout\",\n attributes: {\n title: \"Group Items\"\n },\n overflow: \"never\"\n },\n details: {\n name: \"details\",\n type: \"button\",\n text: 'Toggle Info box',\n togglable: true,\n icon: \"info-circle\",\n commandName: \"ToggleDetails\",\n showText: \"overflow\",\n attributes: {\n title: \"Toggle Info box\"\n },\n overflow: \"never\"\n },\n sort: {\n name: \"sort\",\n component: \"DropDownList\",\n componentOptions: {\n commandOn: CHANGE,\n dataTextField: \"text\",\n dataValueField: \"value\",\n dataSource: [\n { text: \"Default Sort\", value: \"none\" },\n { text: \"Sort A-Z\", value: \"asc\" },\n { text: \"Sort Z-A\", value: \"desc\" }\n ],\n },\n attributes: {\n class: \"k-property-grid-sort\",\n title: \"Sort\"\n },\n overflow: \"never\"\n },\n search: {\n name: \"search\",\n component: \"TextBox\",\n componentOptions: {\n prefixOptions: {\n icon: \"search\"\n },\n placeholder: \"Search...\",\n },\n attributes: {\n class: \"k-grid-search\"\n },\n overflow: \"never\"\n },\n separator: {\n name: \"separator\",\n type: \"separator\",\n },\n spacer: {\n name: \"spacer\",\n type: \"spacer\",\n },\n excel: {\n name: \"excel\",\n type: \"button\",\n text: \"Export to Excel\",\n showText: false,\n icon: \"file-excel\",\n commandName: \"ExcelExport\",\n overflow: \"auto\"\n },\n pdf: {\n name: \"excel\",\n type: \"button\",\n text: \"Export to PDF\",\n showText: false,\n icon: \"file-pdf\",\n commandName: \"PDFExport\",\n overflow: \"auto\"\n },\n };\n\n function isNullorUndefined(value) {\n return value === undefined$1 || value === null;\n }\n\n function isCollection(value) {\n return typeof value === 'object' && isArray(value);\n }\n\n function isComplexObject(value) {\n return typeof value === 'object' && !kendo.isDate(value);\n }\n\n function isEditable(value) {\n return (kendo.type(value) != 'object' && kendo.type(value) != 'function');\n }\n\n function isColumnEditable(column, model) {\n if (!column || !model || !column.field || column.selectable || column.command || column.draggable || (column.editable && !column.editable(model))) {\n return false;\n }\n\n return (column.field && model.editable && model.editable(column.field));\n }\n\n function asArray(obj) {\n return Object.entries(obj).map(x=>x[1]);\n }\n\n let PropertyGridDataSource = kendo.data.TreeListDataSource.extend({\n groupedItemsTree: function(field) {\n let map = this._childrenMap(this.view()),\n defaultParentId = this._defaultParentId(),\n currentChildren = map[defaultParentId] || [],\n grouped = new kendo.data.Query(currentChildren).group({ field: field }).toArray();\n\n return grouped;\n },\n filterGroupedItemsTree: function(expression, field) {\n let dataSource = this;\n let sort = this.sort() || {};\n let filterExpression = expression || { filters: [], logic: \"or\" };\n let map = this._childrenMap(this.data()),\n defaultParentId = this._defaultParentId(),\n currentChildren = map[defaultParentId] || [],\n groups = new kendo.data.Query(currentChildren).sort(sort).group({ field: field }).toArray();\n let filterItems = function(filterExpression, items) {\n let filtered = [];\n for (let i = 0; i < items.length; i++) {\n if (items[i].hasChildren && filterItems(filterExpression, dataSource.childNodes(items[i])).length > 0) {\n filtered.push(items[i]);\n }\n }\n\n return filtered.length != 0 ? filtered : new kendo.data.Query(items).sort(sort).filter(filterExpression).toArray();\n };\n let filteredGroups = [];\n groups.forEach(function(itm) {\n if (itm.items) {\n itm.items = filterItems(filterExpression,itm.items);\n }\n filteredGroups.push(itm);\n });\n\n return filteredGroups;\n }\n });\n\n const DynamicInCellEditor = kendo.ui.treelist.editor.extend({\n createEditable: function() {\n let options = this.options;\n\n this.fields[0].editor = options.model.editor;\n this.fields[0].editorOptions = { ...options.model.editorOptions };\n\n this.editable = new Editable(this.wrapper, {\n fields: this.fields,\n target: options.target,\n clearContainer: options.clearContainer,\n model: this.model,\n change: options.change,\n });\n\n },\n destroy: function() {\n let that = this;\n\n that.editable.destroy();\n\n that.editable.element\n .off()\n .empty()\n .removeAttr(kendo.attr(\"role\"));\n\n that.model = that.wrapper = that.element = that.columns = that.editable = null;\n }\n });\n\n const PropertyGrid = TreeList.extend({\n init: function(element, options) {\n const that = this;\n that._processOptions(options);\n that.options = extend(true, {}, that.options, options);\n that._processedModel = that._processModel();\n that._createDataSource();\n\n TreeList.fn.init.call(that, element, that.options);\n that._wrapper();\n that._detailsBox();\n that._groupable();\n\n kendo.notify(that);\n },\n\n options: {\n name: 'PropertyGrid',\n model: {},\n items: [],\n columns: [{ field: \"field\" },{ field: \"value\", editable: function(e) { return isEditable(e.value); } }],\n hasHeader: false,\n groupable: true,\n resizable: true,\n contextMenu: false,\n sortable: true,\n selectable: true,\n scrollable: true,\n showDetails: true,\n editable: \"incell\",\n size: \"medium\",\n defaultTools: [defaultCommands.search, defaultCommands.sort, defaultCommands.group, defaultCommands.details],\n messages: {\n defaultGroupName: \"Other\"\n }\n },\n\n events: [\n BEFORE_EDIT,\n EDIT,\n CHANGE,\n EXPAND,\n COLLAPSE,\n COLUMNRESIZE,\n GROUP_EXPAND,\n GROUP_COLLAPSE,\n CELL_CLOSE,\n SAVE,\n CANCEL,\n PDF_EXPORT\n ],\n\n defaultEditors: {\n string: \"TextBox\",\n date: \"DatePicker\",\n number: \"NumericTextBox\",\n boolean: \"CheckBox\"\n },\n\n _groupContentTemplate: ({ groupName, action, icon }) => `

${kendo.ui.icon($(''), icon)}${groupName}

`,\n\n _detailsTemplate: ({ description }) => `${description || ' '}`,\n\n _setEditable: function(value) {\n const that = this;\n that.options.editable = value;\n },\n\n _processOptions: function(options) {\n const that = this;\n\n kendo.type(options.editMode) === \"boolean\" && !options.editMode ? that._setEditable(false) : that._setEditable(\"incell\");\n if (isNullorUndefined(options.toolbar)) {\n options.toolbar = that.options.defaultTools;\n }\n that._extendColumnOptions(options);\n },\n\n _extendColumnOptions: function(options) {\n const that = this;\n if (!options.columns) {\n return;\n }\n that.options.columns[0] = extend(true, options.columns.fieldColumn, that.options.columns[0]);\n that.options.columns[1] = extend(true, options.columns.valueColumn, that.options.columns[1]);\n delete options.columns;\n },\n\n _processSettings: function(obj, settings) {\n const that = this;\n settings.forEach((item) => {\n if (obj[item.field]) {\n extend(obj[item.field], item);\n\n if (obj[item.field].items) {\n that._processSettings(obj[item.field].value, obj[item.field].items);\n }\n }\n });\n },\n\n _processModel: function() {\n const that = this,\n model = that.options.model,\n options = that.options;\n\n let flatData = that._flatten(model);\n that._setDefaults(flatData);\n that._processSettings(flatData, options.items );\n\n return asArray(flatData);\n },\n\n _createDataSource: function() {\n const that = this,\n dataSource = new PropertyGridDataSource({\n data: that._processedModel,\n serverGrouping: false,\n schema: {\n model: {\n id: \"id\",\n parentId: \"parentId\",\n expanded: true,\n fields: {\n field: { editable: false },\n value: { editable: true }\n }\n },\n }\n });\n\n that.options.dataSource = dataSource;\n },\n\n _flatten: function(model) {\n let id = 1;\n\n function appendNested(result, key, nestedKeys, nestedObject, collectionIdx) {\n if (!isNullorUndefined(collectionIdx)) {\n nestedKeys.forEach (nestedKey => {\n result[`${key}.${collectionIdx}.${nestedKey}`] = nestedObject[nestedKey];\n result[`${key}.${collectionIdx}.${nestedKey}`].parentId = result[`${key}.${collectionIdx}`].id;\n });\n } else {\n nestedKeys.forEach (nestedKey => {\n result[`${key}.${nestedKey}`] = nestedObject[nestedKey];\n });\n }\n }\n\n function flattenCollection(result, obj, key, parentId) {\n const collection = obj[key];\n\n result[key] = {\n id: id++,\n parentId: parentId,\n propType: \"Array\",\n field: key,\n value: collection,\n };\n\n for (let i = 0; i < collection.length; i++) {\n const nested = typeof collection[i] === \"object\" ?\n flattenObject(collection[i], result[key].id) :\n collection[i];\n\n result[`${key}.${i}`] = {\n id: id++,\n parentId: result[key].id,\n propType: typeof obj[key],\n field: `${key}[${i}]`,\n value: nested\n };\n\n if (typeof collection[i] === \"object\") {\n const nestedKeys = Object.keys(nested);\n appendNested(result, key, nestedKeys, nested, i);\n }\n }\n }\n\n function flattenObject(obj, parentId) {\n const result = {},\n keys = Object.keys(obj || { } );\n\n keys.forEach ((key) => {\n if (isNullorUndefined(obj[key])) {\n result[key] = {\n id: id++,\n parentId: parentId,\n propType: typeof obj[key],\n field: key,\n value: obj[key]\n };\n } else if (isCollection(obj[key])) {\n flattenCollection(result, obj, key, parentId);\n } else if (isComplexObject(obj[key])) {\n let tempId = id++;\n const nestedObject = flattenObject(obj[key], tempId);\n const nestedKeys = Object.keys(nestedObject);\n\n result[key] = {\n id: tempId,\n parentId: parentId,\n propType: typeof obj[key],\n field: key,\n value: nestedObject,\n };\n\n appendNested(result, key, nestedKeys, nestedObject);\n } else {\n let parsed = kendo.parseDate(obj[key].toString());\n result[key] = {\n id: id++,\n parentId: parentId,\n propType: parsed != null ? typeof parsed : typeof obj[key],\n field: key,\n value: parsed != null ? parsed : obj[key]\n };\n }\n });\n\n return result;\n }\n\n return flattenObject(model, null);\n },\n\n _setDefaults: function(obj) {\n const that = this;\n\n Object.keys(obj).forEach(key => {\n if (that.options.groupable && !obj[key].group) {\n obj[key].group = that.options.messages.defaultGroupName;\n }\n that._setDefaultEditor(obj[key]);\n });\n },\n\n _setDefaultEditor: function(obj) {\n const that = this,\n type = kendo.type(obj.value);\n switch (type) {\n case \"date\":\n obj.editor = that.defaultEditors.date;\n break;\n case \"boolean\":\n obj.editor = that.defaultEditors.boolean;\n break;\n case \"number\":\n obj.editor = that.defaultEditors.number;\n break;\n default:\n obj.editor = that.defaultEditors.string;\n break;\n }\n },\n\n _createIncellEditor: function(cell, options) {\n const that = this;\n let column = extend({}, options.columns[0]);\n options.model.fields.value.validation = options.model.validation ? options.model.validation.toJSON() : {};\n delete column.parentColumn;\n\n return new DynamicInCellEditor(cell, extend({}, {\n fieldRenderer: that._cellContent.bind(that),\n appendTo: that.wrapper,\n clearContainer: false,\n target: that,\n columns: [column],\n model: options.model,\n change: options.change\n }));\n },\n\n _createDirtyTemplate: function(model) {\n const that = this;\n let templateSettings = that._customTemplateSettings();\n let dirtyIndicator = function(data) {\n return '';\n };\n let templateFunction = function(data) {\n return (dirtyIndicator() + kendo.template(model.template)(model));\n };\n\n return kendo.template(templateFunction, templateSettings).bind({ columnTemplate: model.template });\n },\n\n _cellContent: function(column, model) {\n const that = this,\n incellEditing = that._isIncellEditable(),\n isValueColumn = column.field == \"value\";\n let value, dirtyIndicator, template;\n\n if (isValueColumn && model.template) {\n template = model.dirty ? that._createDirtyTemplate(model) : kendo.template(model.template);\n value = template(model);\n } else if (column.field) {\n value = model.get(column.field);\n dirtyIndicator = incellEditing ? column.dirtyIndicatorTemplate(model) : \"\";\n if (!isNullorUndefined(value)) {\n if (model.format) {\n value = kendo.format(model.format, value);\n }\n\n value = dirtyIndicator + value;\n } else {\n value = dirtyIndicator;\n }\n } else if (isNullorUndefined(value)) {\n value = \"\";\n }\n\n if (model.template) {\n return kendoHtmlElement(value);\n } else {\n if (incellEditing) {\n return isEditable(model.value) && isValueColumn ? that._editableCellContent(value) : kendoHtmlElement(value);\n } else {\n return kendoTextElement(value);\n }\n }\n },\n\n _editableCellContent: function(value) {\n let bTag = kendoDomElement(\"b\");\n let content = kendoHtmlElement(value);\n bTag.children.push(content);\n return bTag;\n },\n\n _generateGroupRow: function(item) {\n const that = this;\n let groupRowContent = (kendo.template(that._groupContentTemplate)({\n groupName: item.value,\n action: item.visible ? COLLAPSE : EXPAND,\n icon: item.visible ? COLLAPSE_ICON : EXPAND_ICON\n }));\n let tdElement = kendoDomElement(TD, { className: \"k-table-td\", class: \"k-table-td\", colSpan: \"3\" , role: \"gridcell\", \"aria-expanded\": item.visible, visible: true }, [kendo.dom.html(groupRowContent)] );\n let trElement = kendoDomElement(TR, { className: \"k-table-group-row k-grouping-row k-table-row\", role: \"row\" , \"data-uid\": item.uid }, [tdElement] );\n return trElement;\n },\n\n _generateDetailsBox: function() {\n const that = this;\n let tdElement = kendoDomElement(TD, { className: \"k-table-td\", class: \"k-table-td\", colSpan: that.grouped ? 3 : 2 , role: \"gridcell\", visible: true }, [kendo.dom.html(\" \")] );\n let trElement = kendoDomElement(TR, {\n className: `k-details-box k-bottom k-sticky k-footer-template k-table-row ${!that.visibleDetails ? 'k-hidden' : ''}`,\n role: \"row\"\n }, [tdElement] );\n return trElement;\n },\n\n _renderRows: function(options, data, columns, selected, childrenMap, viewChildrenMap, hasFooterTemplate) {\n const that = this;\n let selectedRow = selected.length ? selected : that._selectedRowUid;\n let rows = [];\n if (that.grouped) {\n if (that.table.find(\">colgroup>col.k-group-col\").length === 0) {\n that.table.find(\">colgroup\").prepend('');\n }\n that._groupedData.forEach(item => {\n let groupTr = that._generateGroupRow(item);\n\n rows.push(groupTr);\n rows = rows.concat(that._trs({\n columns: columns,\n editedColumn: options.editedColumn,\n editedColumnIndex: options.editedColumnIndex,\n aggregates: options.aggregates,\n selected: selectedRow,\n data: item.items,\n childrenMap: childrenMap,\n viewChildrenMap: viewChildrenMap,\n hasFooterTemplate: hasFooterTemplate,\n visible: item.visible,\n level: 0\n }));\n });\n } else {\n that.table.find(\">colgroup>col.k-group-col\").remove();\n rows = rows.concat(this._trs({\n columns: columns,\n editedColumn: options.editedColumn,\n editedColumnIndex: options.editedColumnIndex,\n aggregates: options.aggregates,\n selected: selectedRow,\n data: data,\n childrenMap: childrenMap,\n viewChildrenMap: viewChildrenMap,\n hasFooterTemplate: hasFooterTemplate,\n visible: true,\n level: 0\n }));\n }\n\n if (that.options.showDetails) {\n rows.push(that._generateDetailsBox());\n }\n\n that._contentTree.render(rows);\n },\n\n _generateRowOptions: function(model, attr, pageable, options, level, hasChildren) {\n const that = this;\n\n let rowOptions = {\n model: model,\n attr: attr,\n level: pageable ? that._renderedModelLevel(model, options) : level,\n editedColumn: options.editedColumn,\n editedColumnIndex: options.editedColumnIndex,\n hasChildren: hasChildren,\n visible: options.visible,\n isAlt: this._absoluteIndex % 2 === 0,\n grouped: that.options.groupable && that.grouped\n };\n return rowOptions;\n },\n\n _renderRow: function(rowOptions, columns, renderer) {\n let row = this._tds(rowOptions, columns, renderer);\n\n if (rowOptions.grouped) {\n let groupTdElement = kendoDomElement(TD, { class: \"k-table-td k-group-cell\", className: \"k-table-td k-group-cell\" });\n row.children.splice(0,0,groupTdElement);\n }\n return row;\n },\n\n editCell: function(cell) {\n const that = this;\n let cellIndex;\n cell = $(cell);\n cellIndex = that.grouped ? that.cellIndex(cell) - 1 : that.cellIndex(cell);\n let column = that.columns[cellIndex];\n let model = that.dataItem(cell);\n\n if (that._isIncellEditable() && model && isColumnEditable(column, model)) {\n that._editCell(cell, column, model, cellIndex);\n }\n },\n\n _wrapper: function() {\n const that = this;\n that.element.css(\"width\", this.options.width);\n that.wrapper.addClass(\"k-property-grid\");\n },\n\n _toolbar: function() {\n const that = this,\n options = that.options;\n let toolbarOptions = options.toolbar;\n let toolbar = this.toolbar;\n\n\n if (!toolbarOptions) {\n return;\n }\n\n if (Array.isArray(toolbarOptions)) {\n let items = that._processToolbarItems(toolbarOptions);\n items = that._verifyItems(items);\n\n toolbar.kendoToolBar({\n size: \"medium\",\n resizable: true,\n navigateOnTab: !options.navigatable,\n items: items,\n });\n\n toolbar.find(\".k-grid-search .k-input-inner\").attr({\n placeholder: options.messages.commands.search,\n title: options.messages.commands.search\n });\n\n that._attachToolbarHandlers();\n } else {\n toolbar.append(kendo.template(toolbarOptions)({}));\n }\n\n },\n\n _attachToolbarHandlers: function() {\n const that = this;\n let toolbarWidget = that.toolbar.getKendoToolBar();\n let sortElement = toolbarWidget.element.find('[data-command=\"sort\"] input');\n\n toolbarWidget.bind(\"toggle\", that._toolbarClick.bind(that));\n toolbarWidget.bind(\"click\", that._toolbarClick.bind(that));\n\n if (sortElement.length > 0) {\n sortElement.getKendoDropDownList().bind(\"change\", that._sortItems.bind(that));\n }\n },\n\n _verifyItems: function(items) {\n const that = this;\n if ((!that.options.groupable || !that.options.items.some(x=>x.hasOwnProperty(\"group\")) )) {\n items = items.filter(x=>x.name != \"group\");\n }\n if (!(that.options.showDetails && that.options.selectable) && items.findIndex(x=>x.name == \"details\") > 0) {\n items = items.filter(x=>x.name != \"details\");\n }\n return items;\n },\n\n _getCommandType: function(command) {\n if (command.type) {\n return command.type;\n }\n\n if (command.template) {\n return null;\n }\n\n return \"button\";\n },\n\n _processToolbarItems: function(commands) {\n const that = this,\n messages = that.options.messages.commands;\n let items = [];\n\n commands.map(command => {\n let name = (isPlainObject(command) ? command.name || \"\" : command).toLowerCase();\n let text = messages[name];\n\n if (!name && !(isPlainObject(command) && command.template)) {\n throw new Error(\"Commands should have name specified\");\n }\n\n command = extend({}, defaultCommands[name], {\n name: name,\n text: text || (defaultCommands[name] || {}).text,\n type: that._getCommandType(defaultCommands[name] || {})\n }, command);\n\n if (command.imageClass) {\n command.spriteCssClass = command.imageClass;\n command.iconClass = command.imageClass;\n }\n\n if (!command.attributes) {\n command.attributes = {};\n }\n\n command.attributes[\"data-command\"] = command.commandName || name;\n\n if (command.menuButtons || command.buttons) {\n delete command.name;\n }\n\n command.click = (e) => {\n let origEvent = e.event || e.originalEvent;\n if (origEvent) {\n origEvent.preventDefault();\n origEvent.stopPropagation();\n }\n\n that._commandClick({\n currentTarget: e.target\n });\n };\n\n if (command.className) {\n if (!command.attributes) {\n command.attributes = {};\n }\n\n command.attributes[\"class\"] = command.className;\n }\n command.attributes[\"title\"] = text || command.attributes[\"title\"];\n\n items.push(command);\n });\n\n return items;\n },\n\n _toolbarClick: function(ev) {\n let command = $(ev.target).data(\"command\"),\n options = $(ev.target).data(\"options\");\n\n if (!!$(ev.target).val()) {\n options = extend({}, options, { value: $(ev.target).val() });\n }\n\n if (!command || !ui.propertygrid.commands[command] ) {\n return;\n }\n\n this._action({\n command: command,\n options: options\n });\n },\n\n _sortItems: function(e) {\n const that = this,\n\n dataSource = that.dataSource,\n dir = e.sender.value();\n let sort = dir === \"none\" ? {} : { field: \"field\", dir: dir };\n\n dataSource.sort(sort);\n that._groupedData = dataSource.filterGroupedItemsTree(dataSource.filter(),\"group\").map(itm => ({\n ...itm,\n visible: that._groupedData.filter(x=>x.value == itm.value)[0].visible,\n uid: that._groupedData.filter(x=>x.value == itm.value)[0].uid\n }));\n\n if (that.grouped) {\n that.refresh();\n }\n },\n\n _initContextMenu: function() {\n const that = this,\n options = that.options;\n\n if (!options.contextMenu) {\n return;\n }\n\n let tbodyContextMenu = isPlainObject(options.contextMenu) && isArray(options.contextMenu.body) ? { items: options.contextMenu.body } : { items: defaultBodyContextMenu };\n\n let mainOptions = isPlainObject(options.contextMenu) ? options.contextMenu : {};\n\n tbodyContextMenu = extend({}, {\n messages: options.messages,\n target: that.tbody,\n filter: \".k-table-row:not(.k-grouping-row,.k-details-box) > .k-table-td\",\n action: that._action.bind(that),\n states: that._buildStates()\n }, mainOptions, tbodyContextMenu);\n\n that.tbodyContextMenu = new ui.propertygrid.ContextMenu(\"\", tbodyContextMenu);\n },\n\n _buildStates: function() {\n const that = this;\n\n return {\n isResizable: that.options.resizable,\n isEditable: that.options.editable,\n windowHasSelection: () => (typeof window.getSelection != 'undefined' && window.getSelection().rangeCount != 0 && window.getSelection().getRangeAt(0).toString() != ''),\n isDirty: (target)=> {\n let dataItem = this.dataItem(target);\n return dataItem.dirty;\n },\n isNotInEditMode: (target) => !target.closest(\"td\").hasClass(\"k-edit-cell\"),\n isNotGroupColumn: (target) => !target.closest(\"td\").hasClass(\"k-group-cell\"),\n isExpandable: (target) => {\n let dataItem = this.dataItem(target);\n return (dataItem && dataItem.hasChildren && !dataItem.expanded);\n },\n isCollapsible: (target) => {\n let dataItem = this.dataItem(target);\n return (dataItem && dataItem.hasChildren && dataItem.expanded);\n }\n };\n },\n\n _action: function(args) {\n let commandName = args.command,\n commandOptions = extend({ propertyGrid: this }, args.options),\n command = new ui.propertygrid.commands[commandName](commandOptions);\n\n return command.exec();\n },\n\n _objectFromNodes: function(rootNodes) {\n const that = this,\n hashTable = Object.create(null),\n dataSource = that.dataSource;\n rootNodes = isArray(rootNodes) ? rootNodes : [rootNodes];\n\n rootNodes.forEach((node) => {\n if (node.propType == \"Array\") {\n hashTable[node.field] = [];\n dataSource.childNodes(node).forEach((childNode) => {\n hashTable[node.field].push(childNode.hasChildren ? that._objectFromNodes(dataSource.childNodes(childNode)) : childNode.value);\n });\n } else {\n hashTable[node.field] = node.hasChildren ? that._objectFromNodes(dataSource.childNodes(node)) : node.value;\n }\n });\n\n return hashTable;\n },\n\n _groupable: function() {\n const that = this;\n that._groupedData = that.dataSource.groupedItemsTree(\"group\").map(itm => ({ ...itm, visible: true, uid: kendo.guid() }));\n that._groupableClickHandler = function(e) {\n let element = $(this),\n groupRow = element.closest(TR);\n\n let group = that._groupedData.filter(x=>x.value === groupRow.text())[0];\n group.visible = !group.visible;\n\n if (element.is(CARET_ALT_DOWN)) {\n if (!that.trigger(GROUP_COLLAPSE, { group: group.items, element: groupRow })) {\n that.refresh();\n }\n } else {\n if (!that.trigger(GROUP_EXPAND, { group: group.items, element: groupRow })) {\n that.refresh();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n };\n\n that.table.on(CLICK + NS, \".k-grouping-row \" + CARET_ALT_RIGHT + \", .k-grouping-row \" + CARET_ALT_DOWN, that._groupableClickHandler)\n .on(\"keydown\" + NS, that._groupRowKeyDown.bind(that));\n\n },\n\n _groupRowKeyDown: function(e) {\n const that = this,\n current = that.current();\n let handled = false;\n\n if (!that.options.navigatable) {\n return;\n }\n\n if (e.keyCode == keys.ENTER) {\n kendo.focusElement(that.table);\n that._setCurrent(that._findCurrentCell());\n handled = true;\n }\n\n if ((e.keyCode == keys.LEFT || e.keyCode == keys.RIGHT) && e.altKey) {\n handled = this._handleGroupRowExpandCollapse(current, e.keyCode);\n }\n\n if (handled) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n\n _handleGroupRowExpandCollapse: function(current, keyCode) {\n const that = this,\n row = current.parent();\n\n if (row.is(DOT + GROUPING_ROW)) {\n let visible = that._groupedData.filter(x=>x.value === row.text())[0].visible;\n\n if (visible && keyCode == keys.LEFT || !visible && keyCode == keys.RIGHT) {\n that._toggleGroup(row);\n return true;\n }\n\n }\n },\n\n _toggleGroup: function(groupRow) {\n const that = this;\n let group = that._groupedData.filter(x=>x.value === groupRow.text())[0];\n group.visible = !group.visible;\n that.refresh();\n },\n\n _search: function(e) {\n let that = this;\n let input = e.currentTarget;\n clearTimeout(that._searchTimeOut);\n that._searchTimeOut = setTimeout(function() {\n that._searchTimeOut = null;\n let options = that.options,\n searchFields = options.search ? options.search.fields : [\"field\",\"value\"],\n expression = { filters: [], logic: \"or\" },\n value = input.value;\n\n if (value) {\n for (let i = 0; i < searchFields.length; i++) {\n expression.filters.push({ field: searchFields[i], operator: \"contains\", value: value });\n }\n }\n\n that._groupedData = that.dataSource.filterGroupedItemsTree(expression,\"group\").map(itm => ({ ...itm, visible: true, uid: that._groupedData.filter(x=>x.value == itm.value)[0].uid }));\n that.dataSource.filter(expression);\n that._refreshLayout();\n that._updateDetails();\n }, 300);\n },\n\n _refreshLayout: function() {\n const that = this;\n that._selectedRowUid = that.select().removeClass(\"k-selected\").map(function(_, row) {\n return $(row).attr(\"data-uid\");\n });\n that._contentTree.render([]);\n that._render();\n },\n\n _detailsBox: function() {\n const that = this,\n options = that.options;\n\n that._detailsTemplate = options.detailsTemplate ? options.detailsTemplate : that._detailsTemplate;\n\n if (!options.showDetails) {\n return;\n }\n\n that.detailsContainer = that.wrapper.find(\"table > tr.k-details-box > td\");\n that.bind(CHANGE, that._updateDetails);\n },\n\n _updateDetails: function() {\n const that = this;\n if (!that.options.selectable) {\n return;\n }\n let dataItem = that.dataItem(that.select());\n\n dataItem ? that.table.find(\"tr.k-details-box > td\").html(kendo.template(that._detailsTemplate)(dataItem)) : that._clearDetails();\n },\n\n _clearDetails: function() {\n const that = this;\n let content = ' ';\n that.table.find(\"tr.k-details-box > td\").html(content);\n },\n\n model: function(model, items) {\n const that = this;\n if (!model) {\n return that._objectFromNodes(that.dataSource.rootNodes());\n }\n\n that.options.model = model;\n if (items) {\n that.options.items = items;\n }\n\n that._processedModel = that._processModel();\n that.setDataSource(new PropertyGridDataSource({\n data: that._processedModel,\n serverGrouping: false,\n schema: {\n model: {\n id: \"id\",\n parentId: \"parentId\",\n expanded: true,\n fields: {\n field: { editable: false },\n value: { editable: true }\n }\n },\n }\n }));\n\n },\n\n selectItem: function(value) {\n const that = this;\n return that.select(value);\n },\n\n toggleItem: function(row) {\n const that = this;\n const dataItem = that.dataItem(row);\n\n dataItem.expanded ? that.collapse(row) : that.expand(row);\n },\n\n toggleGroup: function(row) {\n const that = this;\n if (!$(row).is(DOT + GROUPING_ROW)) {\n return;\n }\n\n that._toggleGroup(row);\n },\n\n toggleDetails: function() {\n const that = this;\n if (!that.options.showDetails) {\n return;\n }\n\n that._action({ command: \"ToggleDetails\" });\n },\n\n edit: function(cell) {\n const that = this;\n that.editCell(cell);\n },\n\n saveState: function() {\n const that = this;\n that.saveChanges();\n },\n\n resetState: function() {\n const that = this;\n that.cancelChanges();\n },\n\n setOptions: function(options) {\n const that = this;\n let currentOptions = that.getOptions(),\n wrapper = that.wrapper,\n events = that._events,\n element = that.element;\n\n delete currentOptions.model;\n kendo.deepExtend(currentOptions, options);\n that.model = that.options.model = options.model || { };\n\n that.destroy();\n\n if (wrapper[0] !== element[0]) {\n wrapper.before(element);\n wrapper.remove();\n }\n element.empty();\n\n that.init(element, currentOptions, events);\n that._setEvents(currentOptions);\n },\n\n destroy: function() {\n const that = this;\n if (this.tbodyContextMenu) {\n this.tbodyContextMenu.destroy();\n this.tbodyContextMenu = null;\n }\n\n TreeList.fn.destroy.call(that);\n },\n\n });\n\n let PropertyGridExcelExporter = kendo.excel.ExcelExporter.extend({\n init: function(options) {\n options.columns = this._trimColumns(options.columns || []);\n\n this.allColumns = $.map(this._leafColumns(options.columns || []), this._prepareColumn);\n\n this.columns = this._visibleColumns(this.allColumns);\n this.widget = options.widget;\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hasGroups = this.groups.length > 0;\n this.hierarchy = options.hierarchy;\n this.hasGroupHeaderColumn = this.columns.some(function(column) { return column.groupHeaderColumnTemplate; });\n this.collapsible = this.options.collapsible;\n },\n\n _recursiveRows: function(rows, item) {\n let this$1$1 = this;\n let level = this$1$1.widget.dataSource.level(item);\n rows.push(...this$1$1._dataRow(item, level + 1, this._depth()));\n\n if (item.hasChildren) {\n let children = this$1$1.widget.dataSource.childNodes(item);\n for (let itmIdx = 0; itmIdx < children.length; itmIdx++) {\n let item = children[itmIdx];\n\n this._recursiveRows(rows,item);\n }\n }\n },\n\n _buildGroupedDataRows: function(data, rows, colSpan) {\n for (let idx = 0; idx < data.length; idx++) {\n let groupItem = data[idx];\n rows.push({\n type: \"group-header\",\n cells: [ {\n value: groupItem.value,\n colSpan: colSpan,\n background: \"#dfdfdf\",\n color: \"#333\",\n } ],\n level: null\n });\n for (let itmIdx = 0; itmIdx < groupItem.items.length; itmIdx++) {\n let item = groupItem.items[itmIdx];\n\n this._recursiveRows(rows,item);\n }\n }\n },\n\n _buildDataRows: function(data, rows, parents) {\n let this$1$1 = this;\n let depth = this._depth();\n let itemLevel = this.hierarchy.itemLevel;\n let itemId = this.hierarchy.itemId;\n let hasFooter = this._hasFooterTemplate();\n let previousLevel = 0;\n let previousItemId;\n\n for (let idx = 0; idx < data.length; idx++) {\n let item = data[idx];\n let level = itemLevel(item, idx);\n\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({ id: previousItemId, level: previousLevel });\n } else if (level < previousLevel) {\n rows.push(...this$1$1._hierarchyFooterRows(parents, level, depth));\n }\n\n previousLevel = level;\n previousItemId = itemId(item, idx);\n }\n\n rows.push(...this$1$1._dataRow(item, level + 1, depth));\n }\n\n if (hasFooter) {\n rows.push(...this._hierarchyFooterRows(parents, 0, depth));\n\n let rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n },\n\n _hierarchyRows: function() {\n let this$1$1 = this;\n\n let depth = this._depth();\n let data = this.data;\n let hasFooter = this._hasFooterTemplate();\n let rows = [];\n let parents = [];\n\n if (!hasFooter) {\n this.collapsible = false;\n }\n\n if (this$1$1.widget.grouped) {\n data = this$1$1.widget.dataSource.groupedItemsTree(\"group\");\n let colSpan = depth + this$1$1.widget.columns.length;\n this$1$1._buildGroupedDataRows(data, rows, colSpan);\n } else {\n this$1$1._buildDataRows(data, rows, parents);\n }\n this._prependHeaderRows(rows);\n\n return rows;\n }\n });\n\n kendo.PropertyGridExcelExporter = kendo.ExcelExporter.extend({\n workbook: function() {\n return $.Deferred((function(d) {\n this.dataSource.fetch()\n .then((function() {\n\n let workbook = new PropertyGridExcelExporter(extend({}, this.options, this._hierarchy(), {\n data: this.dataSource.view(),\n groups: this.dataSource.group(),\n aggregates: this.dataSource.aggregates()\n })).workbook();\n\n d.resolve(workbook, this.dataSource.view());\n }).bind(this));\n }).bind(this)).promise();\n }\n });\n\n let PropertyGridExcelMixin = {\n extend: function(proto) {\n proto.events.push(\"excelExport\");\n proto.options.excel = $.extend(proto.options.excel, this.options);\n proto.saveAsExcel = this.saveAsExcel;\n },\n options: {\n proxyURL: \"\",\n filterable: false,\n fileName: \"Export.xlsx\"\n },\n saveAsExcel: function() {\n let excel = this.options.excel || {};\n\n let exporter = new kendo.PropertyGridExcelExporter({\n widget: this,\n columns: this.columns,\n dataSource: this.dataSource,\n data: this.dataSource.data(),\n allPages: excel.allPages,\n filterable: excel.filterable,\n hierarchy: excel.hierarchy,\n collapsible: excel.collapsible\n });\n\n exporter.workbook().then((function(book, data) {\n if (!this.trigger(\"excelExport\", { workbook: book, data: data })) {\n let workbook = new kendo.ooxml.Workbook(book);\n\n if (!workbook.options) {\n workbook.options = {};\n }\n workbook.options.skipCustomHeight = true;\n\n workbook.toDataURLAsync().then(function(dataURI) {\n kendo.saveAs({\n dataURI: dataURI,\n fileName: book.fileName || excel.fileName,\n proxyURL: excel.proxyURL,\n forceProxy: excel.forceProxy\n });\n\n exporter._restoreExpandedState();\n });\n\n }\n }).bind(this));\n },\n };\n\n kendo.PropertyGridExcelMixin = PropertyGridExcelMixin;\n\n if (kendo.ooxml && kendo.ooxml.Workbook) {\n PropertyGridExcelMixin.extend(PropertyGrid.prototype);\n }\n\n kendo.ui.propertygrid = kendo.ui.propertygrid || {};\n\n extend(kendo.ui.propertygrid, {\n defaultBodyContextMenu: defaultBodyContextMenu,\n });\n\n kendo.cssProperties.propertyDictionary[\"PropertyGrid\"] = kendo.cssProperties.propertyDictionary[\"TreeList\"];\n kendo.cssProperties.registerPrefix(\"PropertyGrid\", \"k-property-grid-\");\n\n kendo.ui.plugin(PropertyGrid);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}