katoikia-app/web-ui/web-react/node_modules/.cache/babel-loader/1337afc129bf4c0d5ba7a38b704...

1 line
480 KiB
JSON

{"ast":null,"code":"import React, { Component } from 'react';\nimport { localeOption, FilterService } from 'primereact/api';\nimport { DomHandler as DomHandler$1, classNames, ObjectUtils } from 'primereact/utils';\nimport { Paginator } from 'primereact/paginator';\nimport { InputText } from 'primereact/inputtext';\nimport { OverlayService } from 'primereact/overlayservice';\nimport { Ripple } from 'primereact/ripple';\n\nfunction _arrayLikeToArray$5(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray$5(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray$5(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$5(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$5(arr) || _nonIterableSpread();\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _createForOfIteratorHelper$4(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray$4(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$4(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen);\n}\n\nfunction _arrayLikeToArray$4(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _createSuper$6(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$6();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct$6() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTableHeader = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableHeader, _Component);\n\n var _super = _createSuper$6(TreeTableHeader);\n\n function TreeTableHeader(props) {\n var _this;\n\n _classCallCheck(this, TreeTableHeader);\n\n _this = _super.call(this, props);\n _this.state = {\n badgeVisible: false\n };\n _this.onFilterInput = _this.onFilterInput.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableHeader, [{\n key: \"onHeaderClick\",\n value: function onHeaderClick(event, column) {\n if (column.props.sortable) {\n var targetNode = event.target;\n\n if (DomHandler$1.hasClass(targetNode, 'p-sortable-column') || DomHandler$1.hasClass(targetNode, 'p-column-title') || DomHandler$1.hasClass(targetNode, 'p-sortable-column-icon') || DomHandler$1.hasClass(targetNode.parentElement, 'p-sortable-column-icon')) {\n this.props.onSort({\n originalEvent: event,\n sortField: column.props.sortField || column.props.field,\n sortFunction: column.props.sortFunction,\n sortable: column.props.sortable\n });\n DomHandler$1.clearSelection();\n }\n }\n }\n }, {\n key: \"onHeaderMouseDown\",\n value: function onHeaderMouseDown(event, column) {\n if (this.props.reorderableColumns && column.props.reorderable) {\n if (event.target.nodeName !== 'INPUT') event.currentTarget.draggable = true;else if (event.target.nodeName === 'INPUT') event.currentTarget.draggable = false;\n }\n }\n }, {\n key: \"onHeaderKeyDown\",\n value: function onHeaderKeyDown(event, column) {\n if (event.key === 'Enter') {\n this.onHeaderClick(event, column);\n event.preventDefault();\n }\n }\n }, {\n key: \"getMultiSortMetaDataIndex\",\n value: function getMultiSortMetaDataIndex(column) {\n if (this.props.multiSortMeta) {\n for (var i = 0; i < this.props.multiSortMeta.length; i++) {\n if (this.props.multiSortMeta[i].field === column.props.field) {\n return i;\n }\n }\n }\n\n return -1;\n }\n }, {\n key: \"onResizerMouseDown\",\n value: function onResizerMouseDown(event, column) {\n if (this.props.resizableColumns && this.props.onResizeStart) {\n this.props.onResizeStart({\n originalEvent: event,\n columnEl: event.target.parentElement,\n column: column\n });\n }\n }\n }, {\n key: \"onDragStart\",\n value: function onDragStart(event, column) {\n if (this.props.onDragStart) {\n this.props.onDragStart({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onDragOver\",\n value: function onDragOver(event, column) {\n if (this.props.onDragOver) {\n this.props.onDragOver({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onDragLeave\",\n value: function onDragLeave(event, column) {\n if (this.props.onDragLeave) {\n this.props.onDragLeave({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onDrop\",\n value: function onDrop(event, column) {\n if (this.props.onDrop) {\n this.props.onDrop({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onFilterInput\",\n value: function onFilterInput(e, column) {\n var _this2 = this;\n\n if (column.props.filter && this.props.onFilter) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n\n var filterValue = e.target.value;\n this.filterTimeout = setTimeout(function () {\n _this2.props.onFilter({\n value: filterValue,\n field: column.props.field,\n matchMode: column.props.filterMatchMode || 'startsWith'\n });\n\n _this2.filterTimeout = null;\n }, this.props.filterDelay);\n }\n }\n }, {\n key: \"hasColumnFilter\",\n value: function hasColumnFilter(columns) {\n if (columns) {\n var _iterator = _createForOfIteratorHelper$4(columns),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var col = _step.value;\n\n if (col.props.filter) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return false;\n }\n }, {\n key: \"renderSortIcon\",\n value: function renderSortIcon(column, sorted, sortOrder) {\n if (column.props.sortable) {\n var sortIcon = sorted ? sortOrder < 0 ? 'pi-sort-amount-down' : 'pi-sort-amount-up-alt' : 'pi-sort-alt';\n var sortIconClassName = classNames('p-sortable-column-icon', 'pi pi-fw', sortIcon);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sortIconClassName\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"renderResizer\",\n value: function renderResizer(column) {\n var _this3 = this;\n\n if (this.props.resizableColumns) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"p-column-resizer p-clickable\",\n onMouseDown: function onMouseDown(e) {\n return _this3.onResizerMouseDown(e, column);\n }\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"getAriaSort\",\n value: function getAriaSort(column, sorted, sortOrder) {\n if (column.props.sortable) {\n var sortIcon = sorted ? sortOrder < 0 ? 'pi-sort-down' : 'pi-sort-up' : 'pi-sort';\n if (sortIcon === 'pi-sort-down') return 'descending';else if (sortIcon === 'pi-sort-up') return 'ascending';else return 'none';\n } else {\n return null;\n }\n }\n }, {\n key: \"renderSortBadge\",\n value: function renderSortBadge(sortMetaDataIndex) {\n if (sortMetaDataIndex !== -1 && this.state.badgeVisible) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"p-sortable-column-badge\"\n }, sortMetaDataIndex + 1);\n }\n\n return null;\n }\n }, {\n key: \"renderHeaderCell\",\n value: function renderHeaderCell(column, options) {\n var _this4 = this;\n\n var filterElement;\n\n if (column.props.filter && options.renderFilter) {\n filterElement = column.props.filterElement || /*#__PURE__*/React.createElement(InputText, {\n onInput: function onInput(e) {\n return _this4.onFilterInput(e, column);\n },\n type: this.props.filterType,\n defaultValue: this.props.filters && this.props.filters[column.props.field] ? this.props.filters[column.props.field].value : null,\n className: \"p-column-filter\",\n placeholder: column.props.filterPlaceholder,\n maxLength: column.props.filterMaxLength\n });\n }\n\n if (options.filterOnly) {\n return /*#__PURE__*/React.createElement(\"th\", {\n key: column.props.columnKey || column.props.field || options.index,\n className: classNames('p-filter-column', column.props.filterHeaderClassName),\n style: column.props.filterHeaderStyle || column.props.style,\n rowSpan: column.props.rowSpan,\n colSpan: column.props.colSpan\n }, filterElement);\n } else {\n var sortMetaDataIndex = this.getMultiSortMetaDataIndex(column);\n var multiSortMetaData = sortMetaDataIndex !== -1 ? this.props.multiSortMeta[sortMetaDataIndex] : null;\n var singleSorted = column.props.field === this.props.sortField;\n var multipleSorted = multiSortMetaData !== null;\n var sorted = column.props.sortable && (singleSorted || multipleSorted);\n var sortOrder = 0;\n if (singleSorted) sortOrder = this.props.sortOrder;else if (multipleSorted) sortOrder = multiSortMetaData.order;\n var sortIconElement = this.renderSortIcon(column, sorted, sortOrder);\n var ariaSortData = this.getAriaSort(column, sorted, sortOrder);\n var sortBadge = this.renderSortBadge(sortMetaDataIndex);\n var className = classNames(column.props.headerClassName || column.props.className, {\n 'p-sortable-column': column.props.sortable,\n 'p-highlight': sorted,\n 'p-resizable-column': this.props.resizableColumns\n });\n var resizer = this.renderResizer(column);\n return /*#__PURE__*/React.createElement(\"th\", {\n key: column.columnKey || column.field || options.index,\n className: className,\n style: column.props.headerStyle || column.props.style,\n tabIndex: column.props.sortable ? this.props.tabIndex : null,\n onClick: function onClick(e) {\n return _this4.onHeaderClick(e, column);\n },\n onMouseDown: function onMouseDown(e) {\n return _this4.onHeaderMouseDown(e, column);\n },\n onKeyDown: function onKeyDown(e) {\n return _this4.onHeaderKeyDown(e, column);\n },\n rowSpan: column.props.rowSpan,\n colSpan: column.props.colSpan,\n \"aria-sort\": ariaSortData,\n onDragStart: function onDragStart(e) {\n return _this4.onDragStart(e, column);\n },\n onDragOver: function onDragOver(e) {\n return _this4.onDragOver(e, column);\n },\n onDragLeave: function onDragLeave(e) {\n return _this4.onDragLeave(e, column);\n },\n onDrop: function onDrop(e) {\n return _this4.onDrop(e, column);\n }\n }, resizer, /*#__PURE__*/React.createElement(\"span\", {\n className: \"p-column-title\"\n }, column.props.header), sortIconElement, sortBadge, filterElement);\n }\n }\n }, {\n key: \"renderHeaderRow\",\n value: function renderHeaderRow(row, index) {\n var _this5 = this;\n\n var rowColumns = React.Children.toArray(row.props.children);\n var rowHeaderCells = rowColumns.map(function (col, i) {\n return _this5.renderHeaderCell(col, {\n index: i,\n filterOnly: false,\n renderFilter: true\n });\n });\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: index\n }, rowHeaderCells);\n }\n }, {\n key: \"renderColumnGroup\",\n value: function renderColumnGroup() {\n var _this6 = this;\n\n var rows = React.Children.toArray(this.props.columnGroup.props.children);\n return rows.map(function (row, i) {\n return _this6.renderHeaderRow(row, i);\n });\n }\n }, {\n key: \"renderColumns\",\n value: function renderColumns(columns) {\n var _this7 = this;\n\n if (columns) {\n if (this.hasColumnFilter(columns)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"tr\", null, columns.map(function (col, i) {\n return _this7.renderHeaderCell(col, {\n index: i,\n filterOnly: false,\n renderFilter: false\n });\n })), /*#__PURE__*/React.createElement(\"tr\", null, columns.map(function (col, i) {\n return _this7.renderHeaderCell(col, {\n index: i,\n filterOnly: true,\n renderFilter: true\n });\n })));\n } else {\n return /*#__PURE__*/React.createElement(\"tr\", null, columns.map(function (col, i) {\n return _this7.renderHeaderCell(col, {\n index: i,\n filterOnly: false,\n renderFilter: false\n });\n }));\n }\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var content = this.props.columnGroup ? this.renderColumnGroup() : this.renderColumns(this.props.columns);\n return /*#__PURE__*/React.createElement(\"thead\", {\n className: \"p-treetable-thead\"\n }, content);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n return {\n badgeVisible: nextProps.multiSortMeta && nextProps.multiSortMeta.length > 1\n };\n }\n }]);\n\n return TreeTableHeader;\n}(Component);\n\nfunction _createForOfIteratorHelper$3(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray$3(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$3(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen);\n}\n\nfunction _arrayLikeToArray$3(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nvar DomHandler = /*#__PURE__*/function () {\n function DomHandler() {\n _classCallCheck(this, DomHandler);\n }\n\n _createClass(DomHandler, null, [{\n key: \"innerWidth\",\n value: function innerWidth(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"width\",\n value: function width(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"getWindowScrollTop\",\n value: function getWindowScrollTop() {\n var doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n }, {\n key: \"getWindowScrollLeft\",\n value: function getWindowScrollLeft() {\n var doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n }, {\n key: \"getOuterWidth\",\n value: function getOuterWidth(el, margin) {\n if (el) {\n var width = el.offsetWidth || el.getBoundingClientRect().width;\n\n if (margin) {\n var style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"getOuterHeight\",\n value: function getOuterHeight(el, margin) {\n if (el) {\n var height = el.offsetHeight || el.getBoundingClientRect().height;\n\n if (margin) {\n var style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n return 0;\n }\n }, {\n key: \"getClientHeight\",\n value: function getClientHeight(el, margin) {\n if (el) {\n var height = el.clientHeight;\n\n if (margin) {\n var style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n return 0;\n }\n }, {\n key: \"getClientWidth\",\n value: function getClientWidth(el, margin) {\n if (el) {\n var width = el.clientWidth;\n\n if (margin) {\n var style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n var win = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n w = win.innerWidth || e.clientWidth || g.clientWidth,\n h = win.innerHeight || e.clientHeight || g.clientHeight;\n return {\n width: w,\n height: h\n };\n }\n }, {\n key: \"getOffset\",\n value: function getOffset(el) {\n if (el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n\n return {\n top: 'auto',\n left: 'auto'\n };\n }\n }, {\n key: \"index\",\n value: function index(element) {\n if (element) {\n var children = element.parentNode.childNodes;\n var num = 0;\n\n for (var i = 0; i < children.length; i++) {\n if (children[i] === element) return num;\n if (children[i].nodeType === 1) num++;\n }\n }\n\n return -1;\n }\n }, {\n key: \"addMultipleClasses\",\n value: function addMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n var styles = className.split(' ');\n\n for (var i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n var _styles = className.split(' ');\n\n for (var _i = 0; _i < _styles.length; _i++) {\n element.className += ' ' + _styles[_i];\n }\n }\n }\n }\n }, {\n key: \"removeMultipleClasses\",\n value: function removeMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n var styles = className.split(' ');\n\n for (var i = 0; i < styles.length; i++) {\n element.classList.remove(styles[i]);\n }\n } else {\n var _styles2 = className.split(' ');\n\n for (var _i2 = 0; _i2 < _styles2.length; _i2++) {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + _styles2[_i2].split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n }\n }\n }, {\n key: \"addClass\",\n value: function addClass(element, className) {\n if (element && className) {\n if (element.classList) element.classList.add(className);else element.className += ' ' + className;\n }\n }\n }, {\n key: \"removeClass\",\n value: function removeClass(element, className) {\n if (element && className) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n }, {\n key: \"hasClass\",\n value: function hasClass(element, className) {\n if (element) {\n if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n }\n }, {\n key: \"find\",\n value: function find(element, selector) {\n return element ? Array.from(element.querySelectorAll(selector)) : [];\n }\n }, {\n key: \"findSingle\",\n value: function findSingle(element, selector) {\n if (element) {\n return element.querySelector(selector);\n }\n\n return null;\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(el) {\n if (el) {\n var height = el.offsetHeight;\n var style = getComputedStyle(el);\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n return height;\n }\n\n return 0;\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"alignOverlay\",\n value: function alignOverlay(overlay, target, appendTo) {\n var calculateMinWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (overlay && target) {\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n calculateMinWidth && (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px');\n this.absolutePosition(overlay, target);\n }\n }\n }\n }, {\n key: \"absolutePosition\",\n value: function absolutePosition(element, target) {\n if (element) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var elementOuterHeight = elementDimensions.height;\n var elementOuterWidth = elementDimensions.width;\n var targetOuterHeight = target.offsetHeight;\n var targetOuterWidth = target.offsetWidth;\n var targetOffset = target.getBoundingClientRect();\n var windowScrollTop = this.getWindowScrollTop();\n var windowScrollLeft = this.getWindowScrollLeft();\n var viewport = this.getViewport();\n var top, left;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n\n if (top < 0) {\n top = windowScrollTop;\n }\n\n element.style.transformOrigin = 'bottom';\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + targetOuterWidth + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);else left = targetOffset.left + windowScrollLeft;\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }\n }, {\n key: \"relativePosition\",\n value: function relativePosition(element, target) {\n if (element) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var targetHeight = target.offsetHeight;\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var top, left;\n\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = -1 * elementDimensions.height;\n\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n\n element.style.transformOrigin = 'bottom';\n } else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = targetOffset.left * -1;\n } else if (targetOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = 0;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }\n }, {\n key: \"flipfitCollision\",\n value: function flipfitCollision(element, target) {\n var _this = this;\n\n var my = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left top';\n var at = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'left bottom';\n var callback = arguments.length > 4 ? arguments[4] : undefined;\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var myArr = my.split(' ');\n var atArr = at.split(' ');\n\n var getPositionValue = function getPositionValue(arr, isOffset) {\n return isOffset ? +arr.substring(arr.search(/(\\+|-)/g)) || 0 : arr.substring(0, arr.search(/(\\+|-)/g)) || arr;\n };\n\n var position = {\n my: {\n x: getPositionValue(myArr[0]),\n y: getPositionValue(myArr[1] || myArr[0]),\n offsetX: getPositionValue(myArr[0], true),\n offsetY: getPositionValue(myArr[1] || myArr[0], true)\n },\n at: {\n x: getPositionValue(atArr[0]),\n y: getPositionValue(atArr[1] || atArr[0]),\n offsetX: getPositionValue(atArr[0], true),\n offsetY: getPositionValue(atArr[1] || atArr[0], true)\n }\n };\n var myOffset = {\n left: function left() {\n var totalOffset = position.my.offsetX + position.at.offsetX;\n return totalOffset + targetOffset.left + (position.my.x === 'left' ? 0 : -1 * (position.my.x === 'center' ? _this.getOuterWidth(element) / 2 : _this.getOuterWidth(element)));\n },\n top: function top() {\n var totalOffset = position.my.offsetY + position.at.offsetY;\n return totalOffset + targetOffset.top + (position.my.y === 'top' ? 0 : -1 * (position.my.y === 'center' ? _this.getOuterHeight(element) / 2 : _this.getOuterHeight(element)));\n }\n };\n var alignWithAt = {\n count: {\n x: 0,\n y: 0\n },\n left: function left() {\n var left = myOffset.left();\n var scrollLeft = DomHandler.getWindowScrollLeft();\n element.style.left = left + scrollLeft + 'px';\n\n if (this.count.x === 2) {\n element.style.left = scrollLeft + 'px';\n this.count.x = 0;\n } else if (left < 0) {\n this.count.x++;\n position.my.x = 'left';\n position.at.x = 'right';\n position.my.offsetX *= -1;\n position.at.offsetX *= -1;\n this.right();\n }\n },\n right: function right() {\n var left = myOffset.left() + DomHandler.getOuterWidth(target);\n var scrollLeft = DomHandler.getWindowScrollLeft();\n element.style.left = left + scrollLeft + 'px';\n\n if (this.count.x === 2) {\n element.style.left = viewport.width - DomHandler.getOuterWidth(element) + scrollLeft + 'px';\n this.count.x = 0;\n } else if (left + DomHandler.getOuterWidth(element) > viewport.width) {\n this.count.x++;\n position.my.x = 'right';\n position.at.x = 'left';\n position.my.offsetX *= -1;\n position.at.offsetX *= -1;\n this.left();\n }\n },\n top: function top() {\n var top = myOffset.top();\n var scrollTop = DomHandler.getWindowScrollTop();\n element.style.top = top + scrollTop + 'px';\n\n if (this.count.y === 2) {\n element.style.left = scrollTop + 'px';\n this.count.y = 0;\n } else if (top < 0) {\n this.count.y++;\n position.my.y = 'top';\n position.at.y = 'bottom';\n position.my.offsetY *= -1;\n position.at.offsetY *= -1;\n this.bottom();\n }\n },\n bottom: function bottom() {\n var top = myOffset.top() + DomHandler.getOuterHeight(target);\n var scrollTop = DomHandler.getWindowScrollTop();\n element.style.top = top + scrollTop + 'px';\n\n if (this.count.y === 2) {\n element.style.left = viewport.height - DomHandler.getOuterHeight(element) + scrollTop + 'px';\n this.count.y = 0;\n } else if (top + DomHandler.getOuterHeight(target) > viewport.height) {\n this.count.y++;\n position.my.y = 'bottom';\n position.at.y = 'top';\n position.my.offsetY *= -1;\n position.at.offsetY *= -1;\n this.top();\n }\n },\n center: function center(axis) {\n if (axis === 'y') {\n var top = myOffset.top() + DomHandler.getOuterHeight(target) / 2;\n element.style.top = top + DomHandler.getWindowScrollTop() + 'px';\n\n if (top < 0) {\n this.bottom();\n } else if (top + DomHandler.getOuterHeight(target) > viewport.height) {\n this.top();\n }\n } else {\n var left = myOffset.left() + DomHandler.getOuterWidth(target) / 2;\n element.style.left = left + DomHandler.getWindowScrollLeft() + 'px';\n\n if (left < 0) {\n this.left();\n } else if (left + DomHandler.getOuterWidth(element) > viewport.width) {\n this.right();\n }\n }\n }\n };\n alignWithAt[position.at.x]('x');\n alignWithAt[position.at.y]('y');\n\n if (this.isFunction(callback)) {\n callback(position);\n }\n }\n }, {\n key: \"findCollisionPosition\",\n value: function findCollisionPosition(position) {\n if (position) {\n var isAxisY = position === 'top' || position === 'bottom';\n var myXPosition = position === 'left' ? 'right' : 'left';\n var myYPosition = position === 'top' ? 'bottom' : 'top';\n\n if (isAxisY) {\n return {\n axis: 'y',\n my: \"center \".concat(myYPosition),\n at: \"center \".concat(position)\n };\n }\n\n return {\n axis: 'x',\n my: \"\".concat(myXPosition, \" center\"),\n at: \"\".concat(position, \" center\")\n };\n }\n }\n }, {\n key: \"getParents\",\n value: function getParents(element) {\n var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n }, {\n key: \"getScrollableParents\",\n value: function getScrollableParents(element) {\n var scrollableParents = [];\n\n if (element) {\n var parents = this.getParents(element);\n var overflowRegex = /(auto|scroll)/;\n\n var overflowCheck = function overflowCheck(node) {\n var styleDeclaration = node ? getComputedStyle(node) : null;\n return styleDeclaration && (overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY')));\n };\n\n var _iterator = _createForOfIteratorHelper$3(parents),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var parent = _step.value;\n var scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n\n if (scrollSelectors) {\n var selectors = scrollSelectors.split(',');\n\n var _iterator2 = _createForOfIteratorHelper$3(selectors),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var selector = _step2.value;\n var el = this.findSingle(parent, selector);\n\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return scrollableParents;\n }\n }, {\n key: \"getHiddenElementOuterHeight\",\n value: function getHiddenElementOuterHeight(element) {\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n\n return 0;\n }\n }, {\n key: \"getHiddenElementOuterWidth\",\n value: function getHiddenElementOuterWidth(element) {\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n\n return 0;\n }\n }, {\n key: \"getHiddenElementDimensions\",\n value: function getHiddenElementDimensions(element) {\n var dimensions = {};\n\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n }\n\n return dimensions;\n }\n }, {\n key: \"fadeIn\",\n value: function fadeIn(element, duration) {\n if (element) {\n element.style.opacity = 0;\n var last = +new Date();\n var opacity = 0;\n\n var tick = function tick() {\n opacity = +element.style.opacity + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n\n if (+opacity < 1) {\n window.requestAnimationFrame && requestAnimationFrame(tick) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n }\n }, {\n key: \"fadeOut\",\n value: function fadeOut(element, duration) {\n if (element) {\n var opacity = 1,\n interval = 50,\n gap = interval / duration;\n var fading = setInterval(function () {\n opacity -= gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n }\n }, {\n key: \"getUserAgent\",\n value: function getUserAgent() {\n return navigator.userAgent;\n }\n }, {\n key: \"isIOS\",\n value: function isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n }, {\n key: \"isAndroid\",\n value: function isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n }, {\n key: \"isTouchDevice\",\n value: function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n }\n }, {\n key: \"isFunction\",\n value: function isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n }, {\n key: \"appendChild\",\n value: function appendChild(element, target) {\n if (this.isElement(target)) target.appendChild(element);else if (target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);else throw new Error('Cannot append ' + target + ' to ' + element);\n }\n }, {\n key: \"removeChild\",\n value: function removeChild(element, target) {\n if (this.isElement(target)) target.removeChild(element);else if (target.el && target.el.nativeElement) target.el.nativeElement.removeChild(element);else throw new Error('Cannot remove ' + element + ' from ' + target);\n }\n }, {\n key: \"isElement\",\n value: function isElement(obj) {\n return (typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === \"object\" ? obj instanceof HTMLElement : obj && _typeof(obj) === \"object\" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === \"string\";\n }\n }, {\n key: \"scrollInView\",\n value: function scrollInView(container, item) {\n var borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');\n var borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n var paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');\n var paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n var containerRect = container.getBoundingClientRect();\n var itemRect = item.getBoundingClientRect();\n var offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n var scroll = container.scrollTop;\n var elementHeight = container.clientHeight;\n var itemHeight = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {//ignore IE bug\n }\n }\n }\n }, {\n key: \"calculateScrollbarWidth\",\n value: function calculateScrollbarWidth(el) {\n if (el) {\n var style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n } else {\n if (this.calculatedScrollbarWidth != null) return this.calculatedScrollbarWidth;\n var scrollDiv = document.createElement(\"div\");\n scrollDiv.className = \"p-scrollbar-measure\";\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }\n }, {\n key: \"getBrowser\",\n value: function getBrowser() {\n if (!this.browser) {\n var matched = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n }, {\n key: \"resolveUserAgent\",\n value: function resolveUserAgent() {\n var ua = navigator.userAgent.toLowerCase();\n var match = /(chrome)[ ]([\\w.]+)/.exec(ua) || /(webkit)[ ]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ ]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) || [];\n return {\n browser: match[1] || \"\",\n version: match[2] || \"0\"\n };\n }\n }, {\n key: \"isVisible\",\n value: function isVisible(element) {\n return element && element.offsetParent != null;\n }\n }, {\n key: \"isExist\",\n value: function isExist(element) {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n }, {\n key: \"hasDOM\",\n value: function hasDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n }\n }, {\n key: \"getFocusableElements\",\n value: function getFocusableElements(element) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var focusableElements = DomHandler.find(element, \"button:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\".concat(selector, \",\\n [href][clientHeight][clientWidth]:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n input:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n select:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n textarea:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n [tabIndex]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n [contenteditable]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector));\n var visibleFocusableElements = [];\n\n var _iterator3 = _createForOfIteratorHelper$3(focusableElements),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var focusableElement = _step3.value;\n if (getComputedStyle(focusableElement).display !== \"none\" && getComputedStyle(focusableElement).visibility !== \"hidden\") visibleFocusableElements.push(focusableElement);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return visibleFocusableElements;\n }\n }, {\n key: \"getFirstFocusableElement\",\n value: function getFirstFocusableElement(element, selector) {\n var focusableElements = DomHandler.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[0] : null;\n }\n }, {\n key: \"getLastFocusableElement\",\n value: function getLastFocusableElement(element, selector) {\n var focusableElements = DomHandler.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;\n }\n }, {\n key: \"getCursorOffset\",\n value: function getCursorOffset(el, prevText, nextText, currentText) {\n if (el) {\n var style = getComputedStyle(el);\n var ghostDiv = document.createElement('div');\n ghostDiv.style.position = 'absolute';\n ghostDiv.style.top = '0px';\n ghostDiv.style.left = '0px';\n ghostDiv.style.visibility = 'hidden';\n ghostDiv.style.pointerEvents = 'none';\n ghostDiv.style.overflow = style.overflow;\n ghostDiv.style.width = style.width;\n ghostDiv.style.height = style.height;\n ghostDiv.style.padding = style.padding;\n ghostDiv.style.border = style.border;\n ghostDiv.style.overflowWrap = style.overflowWrap;\n ghostDiv.style.whiteSpace = style.whiteSpace;\n ghostDiv.style.lineHeight = style.lineHeight;\n ghostDiv.innerHTML = prevText.replace(/\\r\\n|\\r|\\n/g, '<br />');\n var ghostSpan = document.createElement('span');\n ghostSpan.textContent = currentText;\n ghostDiv.appendChild(ghostSpan);\n var text = document.createTextNode(nextText);\n ghostDiv.appendChild(text);\n document.body.appendChild(ghostDiv);\n var offsetLeft = ghostSpan.offsetLeft,\n offsetTop = ghostSpan.offsetTop,\n clientHeight = ghostSpan.clientHeight;\n document.body.removeChild(ghostDiv);\n return {\n left: Math.abs(offsetLeft - el.scrollLeft),\n top: Math.abs(offsetTop - el.scrollTop) + clientHeight\n };\n }\n\n return {\n top: 'auto',\n left: 'auto'\n };\n }\n }, {\n key: \"invokeElementMethod\",\n value: function invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n }, {\n key: \"isClickable\",\n value: function isClickable(element) {\n var targetNode = element.nodeName;\n var parentNode = element.parentElement && element.parentElement.nodeName;\n return targetNode === 'INPUT' || targetNode === 'TEXTAREA' || targetNode === 'BUTTON' || targetNode === 'A' || parentNode === 'INPUT' || parentNode === 'TEXTAREA' || parentNode === 'BUTTON' || parentNode === 'A' || this.hasClass(element, 'p-button') || this.hasClass(element.parentElement, 'p-button') || this.hasClass(element.parentElement, 'p-checkbox') || this.hasClass(element.parentElement, 'p-radiobutton');\n }\n }, {\n key: \"applyStyle\",\n value: function applyStyle(element, style) {\n if (typeof style === 'string') {\n element.style.cssText = this.style;\n } else {\n for (var prop in this.style) {\n element.style[prop] = style[prop];\n }\n }\n }\n }, {\n key: \"exportCSV\",\n value: function exportCSV(csv, filename) {\n var blob = new Blob([csv], {\n type: 'application/csv;charset=utf-8;'\n });\n\n if (window.navigator.msSaveOrOpenBlob) {\n navigator.msSaveOrOpenBlob(blob, filename + '.csv');\n } else {\n var isDownloaded = DomHandler.saveAs({\n name: filename + '.csv',\n src: URL.createObjectURL(blob)\n });\n\n if (!isDownloaded) {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n }\n }\n }, {\n key: \"saveAs\",\n value: function saveAs(file) {\n if (file) {\n var link = document.createElement('a');\n\n if (link.download !== undefined) {\n var name = file.name,\n src = file.src;\n link.setAttribute('href', src);\n link.setAttribute('download', name);\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: \"createInlineStyle\",\n value: function createInlineStyle(nonce) {\n var styleElement = document.createElement('style');\n\n try {\n if (!nonce) {\n nonce = process.env.REACT_APP_CSS_NONCE;\n }\n } catch (error) {// NOOP\n }\n\n nonce && styleElement.setAttribute('nonce', nonce);\n document.head.appendChild(styleElement);\n return styleElement;\n }\n }, {\n key: \"removeInlineStyle\",\n value: function removeInlineStyle(styleElement) {\n if (this.isExist(styleElement)) {\n try {\n document.head.removeChild(styleElement);\n } catch (error) {// style element may have already been removed in a fast refresh\n }\n\n styleElement = null;\n }\n\n return styleElement;\n }\n }]);\n\n return DomHandler;\n}();\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _createSuper$5(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$5();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct$5() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTableBodyCell = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableBodyCell, _Component);\n\n var _super = _createSuper$5(TreeTableBodyCell);\n\n function TreeTableBodyCell(props) {\n var _this;\n\n _classCallCheck(this, TreeTableBodyCell);\n\n _this = _super.call(this, props);\n\n if (_this.props.editor) {\n _this.state = {};\n }\n\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n _this.onEditorFocus = _this.onEditorFocus.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableBodyCell, [{\n key: \"onClick\",\n value: function onClick() {\n var _this2 = this;\n\n if (this.props.editor && !this.state.editing && (this.props.selectOnEdit || !this.props.selectOnEdit && this.props.selected)) {\n this.selfClick = true;\n this.setState({\n editing: true\n }, function () {\n _this2.bindDocumentEditListener();\n\n _this2.overlayEventListener = function (e) {\n if (!_this2.isOutsideClicked(e.target)) {\n _this2.selfClick = true;\n }\n };\n\n OverlayService.on('overlay-click', _this2.overlayEventListener);\n });\n }\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n if (event.which === 13 || event.which === 9) {\n this.switchCellToViewMode(event);\n }\n }\n }, {\n key: \"bindDocumentEditListener\",\n value: function bindDocumentEditListener() {\n var _this3 = this;\n\n if (!this.documentEditListener) {\n this.documentEditListener = function (e) {\n if (!_this3.selfClick && _this3.isOutsideClicked(e.target)) {\n _this3.switchCellToViewMode(e);\n }\n\n _this3.selfClick = false;\n };\n\n document.addEventListener('click', this.documentEditListener);\n }\n }\n }, {\n key: \"isOutsideClicked\",\n value: function isOutsideClicked(target) {\n return this.container && !(this.container.isSameNode(target) || this.container.contains(target));\n }\n }, {\n key: \"unbindDocumentEditListener\",\n value: function unbindDocumentEditListener() {\n if (this.documentEditListener) {\n document.removeEventListener('click', this.documentEditListener);\n this.documentEditListener = null;\n this.selfClick = false;\n }\n }\n }, {\n key: \"closeCell\",\n value: function closeCell() {\n var _this4 = this;\n /* When using the 'tab' key, the focus event of the next cell is not called in IE. */\n\n\n setTimeout(function () {\n _this4.setState({\n editing: false\n }, function () {\n _this4.unbindDocumentEditListener();\n\n OverlayService.off('overlay-click', _this4.overlayEventListener);\n _this4.overlayEventListener = null;\n });\n }, 1);\n }\n }, {\n key: \"onEditorFocus\",\n value: function onEditorFocus(event) {\n this.onClick(event);\n }\n }, {\n key: \"switchCellToViewMode\",\n value: function switchCellToViewMode(event) {\n if (this.props.cellEditValidator) {\n var valid = this.props.cellEditValidator({\n originalEvent: event,\n columnProps: this.props\n });\n\n if (valid) {\n this.closeCell();\n }\n } else {\n this.closeCell();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this5 = this;\n\n if (this.container && this.props.editor) {\n clearTimeout(this.tabindexTimeout);\n\n if (this.state && this.state.editing) {\n var focusable = DomHandler$1.findSingle(this.container, 'input');\n\n if (focusable && document.activeElement !== focusable && !focusable.hasAttribute('data-isCellEditing')) {\n focusable.setAttribute('data-isCellEditing', true);\n focusable.focus();\n }\n\n this.keyHelper.tabIndex = -1;\n } else {\n this.tabindexTimeout = setTimeout(function () {\n if (_this5.keyHelper) {\n _this5.keyHelper.setAttribute('tabindex', 0);\n }\n }, 50);\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.unbindDocumentEditListener();\n\n if (this.overlayEventListener) {\n OverlayService.off('overlay-click', this.overlayEventListener);\n this.overlayEventListener = null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n var className = classNames(this.props.bodyClassName || this.props.className, {\n 'p-editable-column': this.props.editor,\n 'p-cell-editing': this.props.editor ? this.state.editing : false\n });\n var style = this.props.bodyStyle || this.props.style;\n var content;\n\n if (this.state && this.state.editing) {\n if (this.props.editor) content = ObjectUtils.getJSXElement(this.props.editor, {\n node: this.props.node,\n rowData: this.props.node.data,\n value: ObjectUtils.resolveFieldData(this.props.node.data, this.props.field),\n field: this.props.field,\n rowIndex: this.props.rowIndex,\n props: this.props\n });else throw new Error(\"Editor is not found on column.\");\n } else {\n if (this.props.body) content = ObjectUtils.getJSXElement(this.props.body, this.props.node, {\n field: this.props.field,\n rowIndex: this.props.rowIndex,\n props: this.props\n });else content = ObjectUtils.resolveFieldData(this.props.node.data, this.props.field);\n }\n /* eslint-disable */\n\n\n var editorKeyHelper = this.props.editor && /*#__PURE__*/React.createElement(\"a\", {\n tabIndex: 0,\n ref: function ref(el) {\n _this6.keyHelper = el;\n },\n className: \"p-cell-editor-key-helper p-hidden-accessible\",\n onFocus: this.onEditorFocus\n }, /*#__PURE__*/React.createElement(\"span\", null));\n /* eslint-enable */\n\n return /*#__PURE__*/React.createElement(\"td\", {\n ref: function ref(el) {\n return _this6.container = el;\n },\n className: className,\n style: style,\n onClick: this.onClick,\n onKeyDown: this.onKeyDown\n }, this.props.children, editorKeyHelper, content);\n }\n }]);\n\n return TreeTableBodyCell;\n}(Component);\n\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray$2(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$2(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen);\n}\n\nfunction _arrayLikeToArray$2(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction ownKeys$2(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread$2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _createSuper$4(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$4();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct$4() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTableRow = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableRow, _Component);\n\n var _super = _createSuper$4(TreeTableRow);\n\n function TreeTableRow(props) {\n var _this;\n\n _classCallCheck(this, TreeTableRow);\n\n _this = _super.call(this, props);\n _this.onTogglerClick = _this.onTogglerClick.bind(_assertThisInitialized(_this));\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.onTouchEnd = _this.onTouchEnd.bind(_assertThisInitialized(_this));\n _this.propagateUp = _this.propagateUp.bind(_assertThisInitialized(_this));\n _this.onCheckboxChange = _this.onCheckboxChange.bind(_assertThisInitialized(_this));\n _this.onCheckboxFocus = _this.onCheckboxFocus.bind(_assertThisInitialized(_this));\n _this.onCheckboxBlur = _this.onCheckboxBlur.bind(_assertThisInitialized(_this));\n _this.onRightClick = _this.onRightClick.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableRow, [{\n key: \"isLeaf\",\n value: function isLeaf() {\n return this.props.node.leaf === false ? false : !(this.props.node.children && this.props.node.children.length);\n }\n }, {\n key: \"onTogglerClick\",\n value: function onTogglerClick(event) {\n if (this.isExpanded()) this.collapse(event);else this.expand(event);\n event.preventDefault();\n event.stopPropagation();\n }\n }, {\n key: \"expand\",\n value: function expand(event) {\n var expandedKeys = this.props.expandedKeys ? _objectSpread$2({}, this.props.expandedKeys) : {};\n expandedKeys[this.props.node.key] = true;\n this.props.onToggle({\n originalEvent: event,\n value: expandedKeys\n });\n this.invokeToggleEvents(event, true);\n }\n }, {\n key: \"collapse\",\n value: function collapse(event) {\n var expandedKeys = _objectSpread$2({}, this.props.expandedKeys);\n\n delete expandedKeys[this.props.node.key];\n this.props.onToggle({\n originalEvent: event,\n value: expandedKeys\n });\n this.invokeToggleEvents(event, false);\n }\n }, {\n key: \"invokeToggleEvents\",\n value: function invokeToggleEvents(event, expanded) {\n if (expanded) {\n if (this.props.onExpand) {\n this.props.onExpand({\n originalEvent: event,\n node: this.props.node\n });\n }\n } else {\n if (this.props.onCollapse) {\n this.props.onCollapse({\n originalEvent: event,\n node: this.props.node\n });\n }\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick(event) {\n if (this.props.onRowClick) {\n this.props.onRowClick(event, this.props.node);\n }\n\n this.nodeTouched = false;\n }\n }, {\n key: \"onTouchEnd\",\n value: function onTouchEnd() {\n this.nodeTouched = true;\n }\n }, {\n key: \"onCheckboxChange\",\n value: function onCheckboxChange(event) {\n var checked = this.isChecked();\n var selectionKeys = this.props.selectionKeys ? _objectSpread$2({}, this.props.selectionKeys) : {};\n\n if (checked) {\n if (this.props.propagateSelectionDown) this.propagateDown(this.props.node, false, selectionKeys);else delete selectionKeys[this.props.node.key];\n\n if (this.props.propagateSelectionUp && this.props.onPropagateUp) {\n this.props.onPropagateUp({\n originalEvent: event,\n check: false,\n selectionKeys: selectionKeys\n });\n }\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: this.props.node\n });\n }\n } else {\n if (this.props.propagateSelectionDown) this.propagateDown(this.props.node, true, selectionKeys);else selectionKeys[this.props.node.key] = {\n checked: true\n };\n\n if (this.props.propagateSelectionUp && this.props.onPropagateUp) {\n this.props.onPropagateUp({\n originalEvent: event,\n check: true,\n selectionKeys: selectionKeys\n });\n }\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: this.props.node\n });\n }\n }\n\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange({\n originalEvent: event,\n value: selectionKeys\n });\n }\n\n DomHandler$1.clearSelection();\n }\n }, {\n key: \"onCheckboxFocus\",\n value: function onCheckboxFocus() {\n DomHandler$1.addClass(this.checkboxBox, 'p-focus');\n DomHandler$1.addClass(this.checkboxRef, 'p-checkbox-focused');\n }\n }, {\n key: \"onCheckboxBlur\",\n value: function onCheckboxBlur() {\n DomHandler$1.removeClass(this.checkboxBox, 'p-focus');\n DomHandler$1.removeClass(this.checkboxRef, 'p-checkbox-focused');\n }\n }, {\n key: \"propagateUp\",\n value: function propagateUp(event) {\n var check = event.check;\n var selectionKeys = event.selectionKeys;\n var checkedChildCount = 0;\n var childPartialSelected = false;\n\n var _iterator = _createForOfIteratorHelper$2(this.props.node.children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n if (selectionKeys[child.key] && selectionKeys[child.key].checked) checkedChildCount++;else if (selectionKeys[child.key] && selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (check && checkedChildCount === this.props.node.children.length) {\n selectionKeys[this.props.node.key] = {\n checked: true,\n partialChecked: false\n };\n } else {\n if (!check) {\n delete selectionKeys[this.props.node.key];\n }\n\n if (childPartialSelected || checkedChildCount > 0 && checkedChildCount !== this.props.node.children.length) selectionKeys[this.props.node.key] = {\n checked: false,\n partialChecked: true\n };else selectionKeys[this.props.node.key] = {\n checked: false,\n partialChecked: false\n };\n }\n\n if (this.props.propagateSelectionUp && this.props.onPropagateUp) {\n this.props.onPropagateUp(event);\n }\n }\n }, {\n key: \"propagateDown\",\n value: function propagateDown(node, check, selectionKeys) {\n if (check) selectionKeys[node.key] = {\n checked: true,\n partialChecked: false\n };else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (var i = 0; i < node.children.length; i++) {\n this.propagateDown(node.children[i], check, selectionKeys);\n }\n }\n }\n }, {\n key: \"onRightClick\",\n value: function onRightClick(event) {\n DomHandler$1.clearSelection();\n\n if (this.props.onContextMenuSelectionChange) {\n this.props.onContextMenuSelectionChange({\n originalEvent: event,\n value: this.props.node.key\n });\n }\n\n if (this.props.onContextMenu) {\n this.props.onContextMenu({\n originalEvent: event,\n node: this.props.node\n });\n }\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n if (event.target === this.container) {\n var rowElement = event.currentTarget;\n\n switch (event.which) {\n //down arrow\n case 40:\n var nextRow = rowElement.nextElementSibling;\n\n if (nextRow) {\n nextRow.focus();\n }\n\n event.preventDefault();\n break;\n //up arrow\n\n case 38:\n var previousRow = rowElement.previousElementSibling;\n\n if (previousRow) {\n previousRow.focus();\n }\n\n event.preventDefault();\n break;\n //right arrow\n\n case 39:\n if (!this.isExpanded()) {\n this.expand(event);\n }\n\n event.preventDefault();\n break;\n //left arrow\n\n case 37:\n if (this.isExpanded()) {\n this.collapse(event);\n }\n\n event.preventDefault();\n break;\n //enter\n\n case 13:\n this.onClick(event);\n event.preventDefault();\n break;\n }\n }\n }\n }, {\n key: \"isExpanded\",\n value: function isExpanded() {\n return this.props.expandedKeys ? this.props.expandedKeys[this.props.node.key] !== undefined : false;\n }\n }, {\n key: \"isSelected\",\n value: function isSelected() {\n if ((this.props.selectionMode === 'single' || this.props.selectionMode === 'multiple') && this.props.selectionKeys) return this.props.selectionMode === 'single' ? this.props.selectionKeys === this.props.node.key : this.props.selectionKeys[this.props.node.key] !== undefined;else return false;\n }\n }, {\n key: \"isChecked\",\n value: function isChecked() {\n return this.props.selectionKeys ? this.props.selectionKeys[this.props.node.key] && this.props.selectionKeys[this.props.node.key].checked : false;\n }\n }, {\n key: \"isPartialChecked\",\n value: function isPartialChecked() {\n return this.props.selectionKeys ? this.props.selectionKeys[this.props.node.key] && this.props.selectionKeys[this.props.node.key].partialChecked : false;\n }\n }, {\n key: \"renderToggler\",\n value: function renderToggler() {\n var expanded = this.isExpanded();\n var iconClassName = classNames('\"p-treetable-toggler-icon pi pi-fw', {\n 'pi-chevron-right': !expanded,\n 'pi-chevron-down': expanded\n });\n var style = {\n marginLeft: this.props.level * 16 + 'px',\n visibility: this.props.node.leaf === false || this.props.node.children && this.props.node.children.length ? 'visible' : 'hidden'\n };\n return /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"p-treetable-toggler p-link p-unselectable-text\",\n onClick: this.onTogglerClick,\n tabIndex: -1,\n style: style\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: iconClassName\n }), /*#__PURE__*/React.createElement(Ripple, null));\n }\n }, {\n key: \"renderCheckbox\",\n value: function renderCheckbox() {\n var _this2 = this;\n\n if (this.props.selectionMode === 'checkbox' && this.props.node.selectable !== false) {\n var checked = this.isChecked();\n var partialChecked = this.isPartialChecked();\n var className = classNames('p-checkbox-box', {\n 'p-highlight': checked,\n 'p-indeterminate': partialChecked\n });\n var icon = classNames('p-checkbox-icon p-c', {\n 'pi pi-check': checked,\n 'pi pi-minus': partialChecked\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-checkbox p-treetable-checkbox p-component\",\n ref: function ref(el) {\n return _this2.checkboxRef = el;\n },\n onClick: this.onCheckboxChange,\n role: \"checkbox\",\n \"aria-checked\": checked\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-hidden-accessible\"\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"checkbox\",\n onFocus: this.onCheckboxFocus,\n onBlur: this.onCheckboxBlur\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n ref: function ref(el) {\n return _this2.checkboxBox = el;\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: icon\n })));\n } else {\n return null;\n }\n }\n }, {\n key: \"renderCell\",\n value: function renderCell(column) {\n var toggler, checkbox;\n\n if (column.props.expander) {\n toggler = this.renderToggler();\n checkbox = this.renderCheckbox();\n }\n\n return /*#__PURE__*/React.createElement(TreeTableBodyCell, _extends({\n key: column.props.columnKey || column.props.field\n }, column.props, {\n selectOnEdit: this.props.selectOnEdit,\n selected: this.isSelected(),\n node: this.props.node,\n rowIndex: this.props.rowIndex\n }), toggler, checkbox);\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this3 = this;\n\n if (this.isExpanded() && this.props.node.children) {\n return this.props.node.children.map(function (childNode, index) {\n return /*#__PURE__*/React.createElement(TreeTableRow, {\n key: childNode.key || JSON.stringify(childNode.data),\n level: _this3.props.level + 1,\n rowIndex: _this3.props.rowIndex + '_' + index,\n node: childNode,\n columns: _this3.props.columns,\n expandedKeys: _this3.props.expandedKeys,\n selectOnEdit: _this3.props.selectOnEdit,\n onToggle: _this3.props.onToggle,\n onExpand: _this3.props.onExpand,\n onCollapse: _this3.props.onCollapse,\n selectionMode: _this3.props.selectionMode,\n selectionKeys: _this3.props.selectionKeys,\n onSelectionChange: _this3.props.onSelectionChange,\n metaKeySelection: _this3.props.metaKeySelection,\n onRowClick: _this3.props.onRowClick,\n onSelect: _this3.props.onSelect,\n onUnselect: _this3.props.onUnselect,\n propagateSelectionUp: _this3.props.propagateSelectionUp,\n propagateSelectionDown: _this3.props.propagateSelectionDown,\n onPropagateUp: _this3.propagateUp,\n rowClassName: _this3.props.rowClassName,\n contextMenuSelectionKey: _this3.props.contextMenuSelectionKey,\n onContextMenuSelectionChange: _this3.props.onContextMenuSelectionChange,\n onContextMenu: _this3.props.onContextMenu\n });\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var cells = this.props.columns.map(function (col) {\n return _this4.renderCell(col);\n });\n var children = this.renderChildren();\n var className = {\n 'p-highlight': this.isSelected(),\n 'p-highlight-contextmenu': this.props.contextMenuSelectionKey && this.props.contextMenuSelectionKey === this.props.node.key\n };\n\n if (this.props.rowClassName) {\n var rowClassName = this.props.rowClassName(this.props.node);\n className = _objectSpread$2(_objectSpread$2({}, className), rowClassName);\n }\n\n className = classNames(className, this.props.node.className);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"tr\", {\n ref: function ref(el) {\n return _this4.container = el;\n },\n tabIndex: 0,\n className: className,\n style: this.props.node.style,\n onClick: this.onClick,\n onTouchEnd: this.onTouchEnd,\n onContextMenu: this.onRightClick,\n onKeyDown: this.onKeyDown\n }, cells), children);\n }\n }]);\n\n return TreeTableRow;\n}(Component);\n\n_defineProperty(TreeTableRow, \"defaultProps\", {\n node: null,\n level: null,\n columns: null,\n expandedKeys: null,\n contextMenuSelectionKey: null,\n selectionMode: null,\n selectionKeys: null,\n metaKeySelection: true,\n propagateSelectionUp: true,\n propagateSelectionDown: true,\n rowClassName: null,\n onExpand: null,\n onCollapse: null,\n onToggle: null,\n onRowClick: null,\n onSelect: null,\n onUnselect: null,\n onSelectionChange: null,\n onPropagateUp: null,\n onContextMenuSelectionChange: null,\n onContextMenu: null\n});\n\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray$1(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);\n}\n\nfunction _arrayLikeToArray$1(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _createSuper$3(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$3();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct$3() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTableBody = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableBody, _Component);\n\n var _super = _createSuper$3(TreeTableBody);\n\n function TreeTableBody(props) {\n var _this;\n\n _classCallCheck(this, TreeTableBody);\n\n _this = _super.call(this, props);\n _this.onRowClick = _this.onRowClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableBody, [{\n key: \"createRow\",\n value: function createRow(node, index) {\n return /*#__PURE__*/React.createElement(TreeTableRow, {\n key: node.key || JSON.stringify(node.data),\n level: 0,\n rowIndex: index,\n selectOnEdit: this.props.selectOnEdit,\n node: node,\n columns: this.props.columns,\n expandedKeys: this.props.expandedKeys,\n onToggle: this.props.onToggle,\n onExpand: this.props.onExpand,\n onCollapse: this.props.onCollapse,\n selectionMode: this.props.selectionMode,\n selectionKeys: this.props.selectionKeys,\n onSelectionChange: this.props.onSelectionChange,\n metaKeySelection: this.props.metaKeySelection,\n onRowClick: this.onRowClick,\n onSelect: this.props.onSelect,\n onUnselect: this.props.onUnselect,\n propagateSelectionUp: this.props.propagateSelectionUp,\n propagateSelectionDown: this.props.propagateSelectionDown,\n rowClassName: this.props.rowClassName,\n contextMenuSelectionKey: this.props.contextMenuSelectionKey,\n onContextMenuSelectionChange: this.props.onContextMenuSelectionChange,\n onContextMenu: this.props.onContextMenu\n });\n }\n }, {\n key: \"flattenizeTree\",\n value: function flattenizeTree(nodes) {\n var rows = [];\n nodes = nodes || this.props.value;\n\n var _iterator = _createForOfIteratorHelper$1(nodes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n rows.push(node.key);\n\n if (this.isExpandedKey(node.key)) {\n rows = rows.concat(this.flattenizeTree(node.children));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return rows;\n }\n }, {\n key: \"isExpandedKey\",\n value: function isExpandedKey(key) {\n return this.props.expandedKeys && !!this.props.expandedKeys[key];\n }\n }, {\n key: \"onRowClick\",\n value: function onRowClick(event, node) {\n var _this2 = this;\n\n if (this.props.onRowClick) {\n this.props.onRowClick({\n originalEvent: event,\n node: node\n });\n }\n\n var targetNode = event.target.nodeName;\n\n if (targetNode === 'INPUT' || targetNode === 'BUTTON' || targetNode === 'A' || DomHandler.hasClass(event.target, 'p-clickable') || DomHandler.hasClass(event.target, 'p-treetable-toggler') || DomHandler.hasClass(event.target.parentElement, 'p-treetable-toggler')) {\n return;\n }\n\n if ((this.isSingleSelectionMode() || this.isMultipleSelectionMode()) && node.selectable !== false) {\n var selectionKeys;\n var selected = this.isSelected(node);\n var metaSelection = this.nodeTouched ? false : this.props.metaKeySelection;\n var flatKeys = this.flattenizeTree();\n var rowIndex = flatKeys.findIndex(function (key) {\n return key === node.key;\n });\n\n if (this.isMultipleSelectionMode() && event.shiftKey) {\n DomHandler.clearSelection(); // find first selected row\n\n var anchorRowIndex = flatKeys.findIndex(function (key) {\n return _this2.props.selectionKeys[key];\n });\n var rangeStart = Math.min(rowIndex, anchorRowIndex);\n var rangeEnd = Math.max(rowIndex, anchorRowIndex);\n selectionKeys = _objectSpread$1({}, this.props.selectionKeys);\n\n for (var i = rangeStart; i <= rangeEnd; i++) {\n var rowKey = flatKeys[i];\n selectionKeys[rowKey] = true;\n }\n } else {\n this.anchorRowIndex = rowIndex;\n\n if (metaSelection) {\n var metaKey = event.metaKey || event.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n selectionKeys = null;\n } else {\n selectionKeys = _objectSpread$1({}, this.props.selectionKeys);\n delete selectionKeys[node.key];\n }\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: node\n });\n }\n } else {\n if (this.isSingleSelectionMode()) {\n selectionKeys = node.key;\n } else if (this.isMultipleSelectionMode()) {\n selectionKeys = !metaKey ? {} : this.props.selectionKeys ? _objectSpread$1({}, this.props.selectionKeys) : {};\n selectionKeys[node.key] = true;\n }\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: node\n });\n }\n }\n } else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n selectionKeys = null;\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: node\n });\n }\n } else {\n selectionKeys = node.key;\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: node\n });\n }\n }\n } else {\n if (selected) {\n selectionKeys = _objectSpread$1({}, this.props.selectionKeys);\n delete selectionKeys[node.key];\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: node\n });\n }\n } else {\n selectionKeys = this.props.selectionKeys ? _objectSpread$1({}, this.props.selectionKeys) : {};\n selectionKeys[node.key] = true;\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: node\n });\n }\n }\n }\n }\n }\n\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange({\n originalEvent: event,\n value: selectionKeys\n });\n }\n }\n }\n }, {\n key: \"isSingleSelectionMode\",\n value: function isSingleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'single';\n }\n }, {\n key: \"isMultipleSelectionMode\",\n value: function isMultipleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'multiple';\n }\n }, {\n key: \"isSelected\",\n value: function isSelected(node) {\n if ((this.props.selectionMode === 'single' || this.props.selectionMode === 'multiple') && this.props.selectionKeys) return this.props.selectionMode === 'single' ? this.props.selectionKeys === node.key : this.props.selectionKeys[node.key] !== undefined;else return false;\n }\n }, {\n key: \"renderRows\",\n value: function renderRows() {\n var _this3 = this;\n\n if (this.props.paginator && !this.props.lazy) {\n var rpp = this.props.rows || 0;\n var startIndex = this.props.first || 0;\n var endIndex = startIndex + rpp;\n var rows = [];\n\n for (var i = startIndex; i < endIndex; i++) {\n var rowData = this.props.value[i];\n if (rowData) rows.push(this.createRow(this.props.value[i]));else break;\n }\n\n return rows;\n } else {\n return this.props.value.map(function (node, index) {\n return _this3.createRow(node, index);\n });\n }\n }\n }, {\n key: \"renderEmptyMessage\",\n value: function renderEmptyMessage() {\n if (this.props.loading) {\n return null;\n } else {\n var colSpan = this.props.columns ? this.props.columns.length : null;\n var content = this.props.emptyMessage || localeOption('emptyMessage');\n return /*#__PURE__*/React.createElement(\"tr\", null, /*#__PURE__*/React.createElement(\"td\", {\n className: \"p-treetable-emptymessage\",\n colSpan: colSpan\n }, content));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var content = this.props.value && this.props.value.length ? this.renderRows() : this.renderEmptyMessage();\n return /*#__PURE__*/React.createElement(\"tbody\", {\n className: \"p-treetable-tbody\"\n }, content);\n }\n }]);\n\n return TreeTableBody;\n}(Component);\n\n_defineProperty(TreeTableBody, \"defaultProps\", {\n value: null,\n columns: null,\n expandedKeys: null,\n contextMenuSelectionKey: null,\n paginator: false,\n first: null,\n rows: null,\n selectionMode: null,\n selectionKeys: null,\n metaKeySelection: true,\n propagateSelectionUp: true,\n propagateSelectionDown: true,\n lazy: false,\n rowClassName: null,\n emptyMessage: null,\n loading: false,\n onExpand: null,\n onCollapse: null,\n onToggle: null,\n onRowClick: null,\n onSelect: null,\n onUnselect: null,\n onSelectionChange: null,\n onContextMenuSelectionChange: null,\n onContextMenu: null\n});\n\nfunction _createSuper$2(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$2();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct$2() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTableFooter = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableFooter, _Component);\n\n var _super = _createSuper$2(TreeTableFooter);\n\n function TreeTableFooter() {\n _classCallCheck(this, TreeTableFooter);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(TreeTableFooter, [{\n key: \"renderFooterCell\",\n value: function renderFooterCell(column, index) {\n return /*#__PURE__*/React.createElement(\"td\", {\n key: column.field || index,\n className: column.props.footerClassName || column.props.className,\n style: column.props.footerStyle || column.props.style,\n rowSpan: column.props.rowSpan,\n colSpan: column.props.colSpan\n }, column.props.footer);\n }\n }, {\n key: \"renderFooterRow\",\n value: function renderFooterRow(row, index) {\n var _this = this;\n\n var rowColumns = React.Children.toArray(row.props.children);\n var rowFooterCells = rowColumns.map(function (col, index) {\n return _this.renderFooterCell(col, index);\n });\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: index\n }, rowFooterCells);\n }\n }, {\n key: \"renderColumnGroup\",\n value: function renderColumnGroup() {\n var _this2 = this;\n\n var rows = React.Children.toArray(this.props.columnGroup.props.children);\n return rows.map(function (row, i) {\n return _this2.renderFooterRow(row, i);\n });\n }\n }, {\n key: \"renderColumns\",\n value: function renderColumns(columns) {\n var _this3 = this;\n\n if (columns) {\n var headerCells = columns.map(function (col, index) {\n return _this3.renderFooterCell(col, index);\n });\n return /*#__PURE__*/React.createElement(\"tr\", null, headerCells);\n } else {\n return null;\n }\n }\n }, {\n key: \"hasFooter\",\n value: function hasFooter() {\n if (this.props.columnGroup) {\n return true;\n } else {\n for (var i = 0; i < this.props.columns.length; i++) {\n if (this.props.columns[i].props.footer) {\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var content = this.props.columnGroup ? this.renderColumnGroup() : this.renderColumns(this.props.columns);\n\n if (this.hasFooter()) {\n return /*#__PURE__*/React.createElement(\"tfoot\", {\n className: \"p-treetable-tfoot\"\n }, content);\n } else {\n return null;\n }\n }\n }]);\n\n return TreeTableFooter;\n}(Component);\n\n_defineProperty(TreeTableFooter, \"defaultProps\", {\n columns: null,\n columnGroup: null\n});\n\nfunction _createSuper$1(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct$1() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTableScrollableView = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableScrollableView, _Component);\n\n var _super = _createSuper$1(TreeTableScrollableView);\n\n function TreeTableScrollableView(props) {\n var _this;\n\n _classCallCheck(this, TreeTableScrollableView);\n\n _this = _super.call(this, props);\n _this.onHeaderScroll = _this.onHeaderScroll.bind(_assertThisInitialized(_this));\n _this.onBodyScroll = _this.onBodyScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableScrollableView, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setScrollHeight();\n\n if (!this.props.frozen) {\n var scrollBarWidth = DomHandler$1.calculateScrollbarWidth();\n this.scrollHeaderBox.style.marginRight = scrollBarWidth + 'px';\n\n if (this.scrollFooterBox) {\n this.scrollFooterBox.style.marginRight = scrollBarWidth + 'px';\n }\n } else {\n this.scrollBody.style.paddingBottom = DomHandler$1.calculateScrollbarWidth() + 'px';\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.setScrollHeight();\n }\n }, {\n key: \"setScrollHeight\",\n value: function setScrollHeight() {\n if (this.props.scrollHeight) {\n if (this.props.scrollHeight.indexOf('%') !== -1) {\n var datatableContainer = this.findDataTableContainer(this.container);\n this.scrollBody.style.visibility = 'hidden';\n this.scrollBody.style.height = '100px'; //temporary height to calculate static height\n\n var containerHeight = DomHandler$1.getOuterHeight(datatableContainer);\n var relativeHeight = DomHandler$1.getOuterHeight(datatableContainer.parentElement) * parseInt(this.props.scrollHeight, 10) / 100;\n var staticHeight = containerHeight - 100; //total height of headers, footers, paginators\n\n var scrollBodyHeight = relativeHeight - staticHeight;\n this.scrollBody.style.height = 'auto';\n this.scrollBody.style.maxHeight = scrollBodyHeight + 'px';\n this.scrollBody.style.visibility = 'visible';\n } else {\n this.scrollBody.style.maxHeight = this.props.scrollHeight;\n }\n }\n }\n }, {\n key: \"findDataTableContainer\",\n value: function findDataTableContainer(element) {\n if (element) {\n var el = element;\n\n while (el && !DomHandler$1.hasClass(el, 'p-treetable')) {\n el = el.parentElement;\n }\n\n return el;\n } else {\n return null;\n }\n }\n }, {\n key: \"onHeaderScroll\",\n value: function onHeaderScroll() {\n this.scrollHeader.scrollLeft = 0;\n }\n }, {\n key: \"onBodyScroll\",\n value: function onBodyScroll() {\n var frozenView = this.container.previousElementSibling;\n var frozenScrollBody;\n\n if (frozenView) {\n frozenScrollBody = DomHandler$1.findSingle(frozenView, '.p-treetable-scrollable-body');\n }\n\n this.scrollHeaderBox.style.marginLeft = -1 * this.scrollBody.scrollLeft + 'px';\n\n if (this.scrollFooterBox) {\n this.scrollFooterBox.style.marginLeft = -1 * this.scrollBody.scrollLeft + 'px';\n }\n\n if (frozenScrollBody) {\n frozenScrollBody.scrollTop = this.scrollBody.scrollTop;\n }\n }\n }, {\n key: \"calculateRowHeight\",\n value: function calculateRowHeight() {\n var row = DomHandler$1.findSingle(this.scrollTable, 'tr:not(.p-treetable-emptymessage-row)');\n\n if (row) {\n this.rowHeight = DomHandler$1.getOuterHeight(row);\n }\n }\n }, {\n key: \"renderColGroup\",\n value: function renderColGroup() {\n if (this.props.columns && this.props.columns.length) {\n return /*#__PURE__*/React.createElement(\"colgroup\", {\n className: \"p-treetable-scrollable-colgroup\"\n }, this.props.columns.map(function (col, i) {\n return /*#__PURE__*/React.createElement(\"col\", {\n key: col.field + '_' + i\n });\n }));\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classNames('p-treetable-scrollable-view', {\n 'p-treetable-frozen-view': this.props.frozen,\n 'p-treetable-unfrozen-view': !this.props.frozen && this.props.frozenWidth\n });\n var width = this.props.frozen ? this.props.frozenWidth : 'calc(100% - ' + this.props.frozenWidth + ')';\n var left = this.props.frozen ? null : this.props.frozenWidth;\n var colGroup = this.renderColGroup();\n var scrollableBodyStyle = !this.props.frozen && this.props.scrollHeight ? {\n overflowY: 'scroll'\n } : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: {\n width: width,\n left: left\n },\n ref: function ref(el) {\n _this2.container = el;\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-header\",\n ref: function ref(el) {\n _this2.scrollHeader = el;\n },\n onScroll: this.onHeaderScroll\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-header-box\",\n ref: function ref(el) {\n _this2.scrollHeaderBox = el;\n }\n }, /*#__PURE__*/React.createElement(\"table\", {\n className: \"p-treetable-scrollable-header-table\"\n }, colGroup, this.props.header))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-body\",\n ref: function ref(el) {\n _this2.scrollBody = el;\n },\n style: scrollableBodyStyle,\n onScroll: this.onBodyScroll\n }, /*#__PURE__*/React.createElement(\"table\", {\n ref: function ref(el) {\n _this2.scrollTable = el;\n },\n style: {\n top: '0'\n },\n className: \"p-treetable-scrollable-body-table\"\n }, colGroup, this.props.body)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-footer\",\n ref: function ref(el) {\n _this2.scrollFooter = el;\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-footer-box\",\n ref: function ref(el) {\n _this2.scrollFooterBox = el;\n }\n }, /*#__PURE__*/React.createElement(\"table\", {\n className: \"p-treetable-scrollable-footer-table\"\n }, colGroup, this.props.footer))));\n }\n }]);\n\n return TreeTableScrollableView;\n}(Component);\n\n_defineProperty(TreeTableScrollableView, \"defaultProps\", {\n header: null,\n body: null,\n footer: null,\n columns: null,\n frozen: null,\n frozenWidth: null,\n frozenBody: null\n});\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar TreeTable = /*#__PURE__*/function (_Component) {\n _inherits(TreeTable, _Component);\n\n var _super = _createSuper(TreeTable);\n\n function TreeTable(props) {\n var _this;\n\n _classCallCheck(this, TreeTable);\n\n _this = _super.call(this, props);\n var state = {};\n\n if (!_this.props.onToggle) {\n _this.state = {\n expandedKeys: _this.props.expandedKeys\n };\n }\n\n if (!_this.props.onPage) {\n state.first = props.first;\n state.rows = props.rows;\n }\n\n if (!_this.props.onSort) {\n state.sortField = props.sortField;\n state.sortOrder = props.sortOrder;\n state.multiSortMeta = props.multiSortMeta;\n }\n\n if (!_this.props.onFilter) {\n state.filters = props.filters;\n }\n\n if (Object.keys(state).length) {\n _this.state = state;\n }\n\n _this.onToggle = _this.onToggle.bind(_assertThisInitialized(_this));\n _this.onPageChange = _this.onPageChange.bind(_assertThisInitialized(_this));\n _this.onSort = _this.onSort.bind(_assertThisInitialized(_this));\n _this.onFilter = _this.onFilter.bind(_assertThisInitialized(_this));\n _this.onColumnResizeStart = _this.onColumnResizeStart.bind(_assertThisInitialized(_this));\n _this.onColumnDragStart = _this.onColumnDragStart.bind(_assertThisInitialized(_this));\n _this.onColumnDragOver = _this.onColumnDragOver.bind(_assertThisInitialized(_this));\n _this.onColumnDragLeave = _this.onColumnDragLeave.bind(_assertThisInitialized(_this));\n _this.onColumnDrop = _this.onColumnDrop.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTable, [{\n key: \"onToggle\",\n value: function onToggle(event) {\n if (this.props.onToggle) {\n this.props.onToggle(event);\n } else {\n this.setState({\n expandedKeys: event.value\n });\n }\n }\n }, {\n key: \"onPageChange\",\n value: function onPageChange(event) {\n if (this.props.onPage) this.props.onPage(event);else this.setState({\n first: event.first,\n rows: event.rows\n });\n }\n }, {\n key: \"onSort\",\n value: function onSort(event) {\n var sortField = event.sortField;\n var sortOrder = this.props.defaultSortOrder;\n var multiSortMeta;\n var eventMeta;\n this.columnSortable = event.sortable;\n this.columnSortFunction = event.sortFunction;\n this.columnField = event.sortField;\n\n if (this.props.sortMode === 'multiple') {\n var metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;\n multiSortMeta = this.getMultiSortMeta();\n\n if (multiSortMeta && multiSortMeta instanceof Array) {\n var sortMeta = multiSortMeta.find(function (sortMeta) {\n return sortMeta.field === sortField;\n });\n sortOrder = sortMeta ? this.getCalculatedSortOrder(sortMeta.order) : sortOrder;\n }\n\n var newMetaData = {\n field: sortField,\n order: sortOrder\n };\n\n if (sortOrder) {\n if (!multiSortMeta || !metaKey) {\n multiSortMeta = [];\n }\n\n this.addSortMeta(newMetaData, multiSortMeta);\n } else if (this.props.removableSort && multiSortMeta) {\n this.removeSortMeta(newMetaData, multiSortMeta);\n }\n\n eventMeta = {\n multiSortMeta: multiSortMeta\n };\n } else {\n sortOrder = this.getSortField() === sortField ? this.getCalculatedSortOrder(this.getSortOrder()) : sortOrder;\n\n if (this.props.removableSort) {\n sortField = sortOrder ? sortField : null;\n }\n\n eventMeta = {\n sortField: sortField,\n sortOrder: sortOrder\n };\n }\n\n if (this.props.onSort) {\n this.props.onSort(eventMeta);\n } else {\n eventMeta.first = 0;\n this.setState(eventMeta);\n }\n }\n }, {\n key: \"getCalculatedSortOrder\",\n value: function getCalculatedSortOrder(currentOrder) {\n return this.props.removableSort ? this.props.defaultSortOrder === currentOrder ? currentOrder * -1 : 0 : currentOrder * -1;\n }\n }, {\n key: \"addSortMeta\",\n value: function addSortMeta(meta, multiSortMeta) {\n var index = -1;\n\n for (var i = 0; i < multiSortMeta.length; i++) {\n if (multiSortMeta[i].field === meta.field) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) multiSortMeta[index] = meta;else multiSortMeta.push(meta);\n }\n }, {\n key: \"removeSortMeta\",\n value: function removeSortMeta(meta, multiSortMeta) {\n var index = -1;\n\n for (var i = 0; i < multiSortMeta.length; i++) {\n if (multiSortMeta[i].field === meta.field) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) {\n multiSortMeta.splice(index, 1);\n }\n\n multiSortMeta = multiSortMeta.length > 0 ? multiSortMeta : null;\n }\n }, {\n key: \"sortSingle\",\n value: function sortSingle(data) {\n return this.sortNodes(data);\n }\n }, {\n key: \"sortNodes\",\n value: function sortNodes(data) {\n var _this2 = this;\n\n var value = _toConsumableArray(data);\n\n if (this.columnSortable && this.columnSortable === 'custom' && this.columnSortFunction) {\n value = this.columnSortFunction({\n field: this.getSortField(),\n order: this.getSortOrder()\n });\n } else {\n value.sort(function (node1, node2) {\n var sortField = _this2.getSortField();\n\n var value1 = ObjectUtils.resolveFieldData(node1.data, sortField);\n var value2 = ObjectUtils.resolveFieldData(node2.data, sortField);\n var result = null;\n if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {\n numeric: true\n });else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return _this2.getSortOrder() * result;\n });\n\n for (var i = 0; i < value.length; i++) {\n if (value[i].children && value[i].children.length) {\n value[i].children = this.sortNodes(value[i].children);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"sortMultiple\",\n value: function sortMultiple(data) {\n var multiSortMeta = this.getMultiSortMeta();\n if (multiSortMeta) return this.sortMultipleNodes(data, multiSortMeta);else return data;\n }\n }, {\n key: \"sortMultipleNodes\",\n value: function sortMultipleNodes(data, multiSortMeta) {\n var _this3 = this;\n\n var value = _toConsumableArray(data);\n\n value.sort(function (node1, node2) {\n return _this3.multisortField(node1, node2, multiSortMeta, 0);\n });\n\n for (var i = 0; i < value.length; i++) {\n if (value[i].children && value[i].children.length) {\n value[i].children = this.sortMultipleNodes(value[i].children, multiSortMeta);\n }\n }\n\n return value;\n }\n }, {\n key: \"multisortField\",\n value: function multisortField(node1, node2, multiSortMeta, index) {\n var value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n var value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n var result = null;\n if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else {\n if (value1 === value2) {\n return multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, multiSortMeta, index + 1) : 0;\n } else {\n if ((typeof value1 === 'string' || value1 instanceof String) && (typeof value2 === 'string' || value2 instanceof String)) return multiSortMeta[index].order * value1.localeCompare(value2, undefined, {\n numeric: true\n });else result = value1 < value2 ? -1 : 1;\n }\n }\n return multiSortMeta[index].order * result;\n }\n }, {\n key: \"filter\",\n value: function filter(value, field, mode) {\n this.onFilter({\n value: value,\n field: field,\n matchMode: mode\n });\n }\n }, {\n key: \"onFilter\",\n value: function onFilter(event) {\n var currentFilters = this.getFilters();\n var newFilters = currentFilters ? _objectSpread({}, currentFilters) : {};\n if (!this.isFilterBlank(event.value)) newFilters[event.field] = {\n value: event.value,\n matchMode: event.matchMode\n };else if (newFilters[event.field]) delete newFilters[event.field];\n\n if (this.props.onFilter) {\n this.props.onFilter({\n filters: newFilters\n });\n } else {\n this.setState({\n first: 0,\n filters: newFilters\n });\n }\n }\n }, {\n key: \"hasFilter\",\n value: function hasFilter() {\n var filters = this.getFilters();\n return filters && Object.keys(filters).length > 0;\n }\n }, {\n key: \"isFilterBlank\",\n value: function isFilterBlank(filter) {\n if (filter !== null && filter !== undefined) {\n if (typeof filter === 'string' && filter.trim().length === 0 || filter instanceof Array && filter.length === 0) return true;else return false;\n }\n\n return true;\n }\n }, {\n key: \"onColumnResizeStart\",\n value: function onColumnResizeStart(event) {\n var containerLeft = DomHandler$1.getOffset(this.container).left;\n this.resizeColumn = event.columnEl;\n this.resizeColumnProps = event.column;\n this.columnResizing = true;\n this.lastResizerHelperX = event.originalEvent.pageX - containerLeft + this.container.scrollLeft;\n this.bindColumnResizeEvents();\n }\n }, {\n key: \"onColumnResize\",\n value: function onColumnResize(event) {\n var containerLeft = DomHandler$1.getOffset(this.container).left;\n DomHandler$1.addClass(this.container, 'p-unselectable-text');\n this.resizerHelper.style.height = this.container.offsetHeight + 'px';\n this.resizerHelper.style.top = 0 + 'px';\n this.resizerHelper.style.left = event.pageX - containerLeft + this.container.scrollLeft + 'px';\n this.resizerHelper.style.display = 'block';\n }\n }, {\n key: \"onColumnResizeEnd\",\n value: function onColumnResizeEnd(event) {\n var delta = this.resizerHelper.offsetLeft - this.lastResizerHelperX;\n var columnWidth = this.resizeColumn.offsetWidth;\n var newColumnWidth = columnWidth + delta;\n var minWidth = this.resizeColumn.style.minWidth || 15;\n\n if (columnWidth + delta > parseInt(minWidth, 10)) {\n if (this.props.columnResizeMode === 'fit') {\n var nextColumn = this.resizeColumn.nextElementSibling;\n var nextColumnWidth = nextColumn.offsetWidth - delta;\n\n if (newColumnWidth > 15 && nextColumnWidth > 15) {\n if (this.props.scrollable) {\n var scrollableView = this.findParentScrollableView(this.resizeColumn);\n var scrollableBodyTable = DomHandler$1.findSingle(scrollableView, 'table.p-treetable-scrollable-body-table');\n var scrollableHeaderTable = DomHandler$1.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n var scrollableFooterTable = DomHandler$1.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n var resizeColumnIndex = DomHandler$1.index(this.resizeColumn);\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n } else {\n this.resizeColumn.style.width = newColumnWidth + 'px';\n\n if (nextColumn) {\n nextColumn.style.width = nextColumnWidth + 'px';\n }\n }\n }\n } else if (this.props.columnResizeMode === 'expand') {\n if (this.props.scrollable) {\n var _scrollableView = this.findParentScrollableView(this.resizeColumn);\n\n var _scrollableBodyTable = DomHandler$1.findSingle(_scrollableView, 'table.p-treetable-scrollable-body-table');\n\n var _scrollableHeaderTable = DomHandler$1.findSingle(_scrollableView, 'table.p-treetable-scrollable-header-table');\n\n var _scrollableFooterTable = DomHandler$1.findSingle(_scrollableView, 'table.p-treetable-scrollable-footer-table');\n\n _scrollableBodyTable.style.width = _scrollableBodyTable.offsetWidth + delta + 'px';\n _scrollableHeaderTable.style.width = _scrollableHeaderTable.offsetWidth + delta + 'px';\n\n if (_scrollableFooterTable) {\n _scrollableFooterTable.style.width = _scrollableHeaderTable.offsetWidth + delta + 'px';\n }\n\n var _resizeColumnIndex = DomHandler$1.index(this.resizeColumn);\n\n this.resizeColGroup(_scrollableHeaderTable, _resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(_scrollableBodyTable, _resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(_scrollableFooterTable, _resizeColumnIndex, newColumnWidth, null);\n } else {\n this.table.style.width = this.table.offsetWidth + delta + 'px';\n this.resizeColumn.style.width = newColumnWidth + 'px';\n }\n }\n\n if (this.props.onColumnResizeEnd) {\n this.props.onColumnResizeEnd({\n element: this.resizeColumn,\n column: this.resizeColumnProps,\n delta: delta\n });\n }\n }\n\n this.resizerHelper.style.display = 'none';\n this.resizeColumn = null;\n this.resizeColumnProps = null;\n DomHandler$1.removeClass(this.container, 'p-unselectable-text');\n this.unbindColumnResizeEvents();\n }\n }, {\n key: \"findParentScrollableView\",\n value: function findParentScrollableView(column) {\n if (column) {\n var parent = column.parentElement;\n\n while (parent && !DomHandler$1.hasClass(parent, 'p-treetable-scrollable-view')) {\n parent = parent.parentElement;\n }\n\n return parent;\n } else {\n return null;\n }\n }\n }, {\n key: \"resizeColGroup\",\n value: function resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {\n if (table) {\n var colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n if (colGroup) {\n var col = colGroup.children[resizeColumnIndex];\n var nextCol = col.nextElementSibling;\n col.style.width = newColumnWidth + 'px';\n\n if (nextCol && nextColumnWidth) {\n nextCol.style.width = nextColumnWidth + 'px';\n }\n } else {\n throw new Error(\"Scrollable tables require a colgroup to support resizable columns\");\n }\n }\n }\n }, {\n key: \"bindColumnResizeEvents\",\n value: function bindColumnResizeEvents() {\n var _this4 = this;\n\n this.documentColumnResizeListener = document.addEventListener('mousemove', function (event) {\n if (_this4.columnResizing) {\n _this4.onColumnResize(event);\n }\n });\n this.documentColumnResizeEndListener = document.addEventListener('mouseup', function (event) {\n if (_this4.columnResizing) {\n _this4.columnResizing = false;\n\n _this4.onColumnResizeEnd(event);\n }\n });\n }\n }, {\n key: \"unbindColumnResizeEvents\",\n value: function unbindColumnResizeEvents() {\n document.removeEventListener('document', this.documentColumnResizeListener);\n document.removeEventListener('document', this.documentColumnResizeEndListener);\n }\n }, {\n key: \"onColumnDragStart\",\n value: function onColumnDragStart(e) {\n var event = e.originalEvent,\n column = e.column;\n\n if (this.columnResizing) {\n event.preventDefault();\n return;\n }\n\n this.iconWidth = DomHandler$1.getHiddenElementOuterWidth(this.reorderIndicatorUp);\n this.iconHeight = DomHandler$1.getHiddenElementOuterHeight(this.reorderIndicatorUp);\n this.draggedColumnEl = this.findParentHeader(event.currentTarget);\n this.draggedColumn = column;\n event.dataTransfer.setData('text', 'b'); // Firefox requires this to make dragging possible\n }\n }, {\n key: \"onColumnDragOver\",\n value: function onColumnDragOver(e) {\n var event = e.originalEvent;\n var dropHeader = this.findParentHeader(event.currentTarget);\n\n if (this.props.reorderableColumns && this.draggedColumnEl && dropHeader) {\n event.preventDefault();\n var containerOffset = DomHandler$1.getOffset(this.container);\n var dropHeaderOffset = DomHandler$1.getOffset(dropHeader);\n\n if (this.draggedColumnEl !== dropHeader) {\n var targetLeft = dropHeaderOffset.left - containerOffset.left; //let targetTop = containerOffset.top - dropHeaderOffset.top;\n\n var columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n this.reorderIndicatorUp.style.top = dropHeaderOffset.top - containerOffset.top - (this.iconHeight - 1) + 'px';\n this.reorderIndicatorDown.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUp.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(this.iconWidth / 2) + 'px';\n this.reorderIndicatorDown.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(this.iconWidth / 2) + 'px';\n this.dropPosition = 1;\n } else {\n this.reorderIndicatorUp.style.left = targetLeft - Math.ceil(this.iconWidth / 2) + 'px';\n this.reorderIndicatorDown.style.left = targetLeft - Math.ceil(this.iconWidth / 2) + 'px';\n this.dropPosition = -1;\n }\n\n this.reorderIndicatorUp.style.display = 'block';\n this.reorderIndicatorDown.style.display = 'block';\n }\n }\n }\n }, {\n key: \"onColumnDragLeave\",\n value: function onColumnDragLeave(e) {\n var event = e.originalEvent;\n\n if (this.props.reorderableColumns && this.draggedColumnEl) {\n event.preventDefault();\n this.reorderIndicatorUp.style.display = 'none';\n this.reorderIndicatorDown.style.display = 'none';\n }\n }\n }, {\n key: \"onColumnDrop\",\n value: function onColumnDrop(e) {\n var _this5 = this;\n\n var event = e.originalEvent,\n column = e.column;\n event.preventDefault();\n\n if (this.draggedColumnEl) {\n var dragIndex = DomHandler$1.index(this.draggedColumnEl);\n var dropIndex = DomHandler$1.index(this.findParentHeader(event.currentTarget));\n var allowDrop = dragIndex !== dropIndex;\n\n if (allowDrop && (dropIndex - dragIndex === 1 && this.dropPosition === -1 || dragIndex - dropIndex === 1 && this.dropPosition === 1)) {\n allowDrop = false;\n }\n\n if (allowDrop) {\n var columns = this.state.columnOrder ? this.getColumns() : React.Children.toArray(this.props.children);\n\n var isSameColumn = function isSameColumn(col1, col2) {\n return col1.props.columnKey || col2.props.columnKey ? ObjectUtils.equals(col1, col2, 'props.columnKey') : ObjectUtils.equals(col1, col2, 'props.field');\n };\n\n var dragColIndex = columns.findIndex(function (child) {\n return isSameColumn(child, _this5.draggedColumn);\n });\n var dropColIndex = columns.findIndex(function (child) {\n return isSameColumn(child, column);\n });\n\n if (dropColIndex < dragColIndex && this.dropPosition === 1) {\n dropColIndex++;\n }\n\n if (dropColIndex > dragColIndex && this.dropPosition === -1) {\n dropColIndex--;\n }\n\n ObjectUtils.reorderArray(columns, dragColIndex, dropColIndex);\n var columnOrder = [];\n\n var _iterator = _createForOfIteratorHelper(columns),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _column = _step.value;\n columnOrder.push(_column.props.columnKey || _column.props.field);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.setState({\n columnOrder: columnOrder\n });\n\n if (this.props.onColReorder) {\n this.props.onColReorder({\n dragIndex: dragColIndex,\n dropIndex: dropColIndex,\n columns: columns\n });\n }\n }\n\n this.reorderIndicatorUp.style.display = 'none';\n this.reorderIndicatorDown.style.display = 'none';\n this.draggedColumnEl.draggable = false;\n this.draggedColumnEl = null;\n this.dropPosition = null;\n }\n }\n }, {\n key: \"findParentHeader\",\n value: function findParentHeader(element) {\n if (element.nodeName === 'TH') {\n return element;\n } else {\n var parent = element.parentElement;\n\n while (parent.nodeName !== 'TH') {\n parent = parent.parentElement;\n if (!parent) break;\n }\n\n return parent;\n }\n }\n }, {\n key: \"getExpandedKeys\",\n value: function getExpandedKeys() {\n return this.props.onToggle ? this.props.expandedKeys : this.state.expandedKeys;\n }\n }, {\n key: \"getFirst\",\n value: function getFirst() {\n return this.props.onPage ? this.props.first : this.state.first;\n }\n }, {\n key: \"getRows\",\n value: function getRows() {\n return this.props.onPage ? this.props.rows : this.state.rows;\n }\n }, {\n key: \"getSortField\",\n value: function getSortField() {\n return this.props.onSort ? this.props.sortField : this.state.sortField;\n }\n }, {\n key: \"getSortOrder\",\n value: function getSortOrder() {\n return this.props.onSort ? this.props.sortOrder : this.state.sortOrder;\n }\n }, {\n key: \"getMultiSortMeta\",\n value: function getMultiSortMeta() {\n return this.props.onSort ? this.props.multiSortMeta : this.state.multiSortMeta;\n }\n }, {\n key: \"getFilters\",\n value: function getFilters() {\n return this.props.onFilter ? this.props.filters : this.state.filters;\n }\n }, {\n key: \"findColumnByKey\",\n value: function findColumnByKey(columns, key) {\n if (columns && columns.length) {\n for (var i = 0; i < columns.length; i++) {\n var child = columns[i];\n\n if (child.props.columnKey === key || child.props.field === key) {\n return child;\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"getColumns\",\n value: function getColumns() {\n var columns = React.Children.toArray(this.props.children);\n\n if (columns && columns.length) {\n if (this.props.reorderableColumns && this.state.columnOrder) {\n var orderedColumns = [];\n\n var _iterator2 = _createForOfIteratorHelper(this.state.columnOrder),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var columnKey = _step2.value;\n var column = this.findColumnByKey(columns, columnKey);\n\n if (column) {\n orderedColumns.push(column);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return [].concat(orderedColumns, _toConsumableArray(columns.filter(function (item) {\n return orderedColumns.indexOf(item) < 0;\n })));\n } else {\n return columns;\n }\n }\n\n return null;\n }\n }, {\n key: \"getTotalRecords\",\n value: function getTotalRecords(data) {\n return this.props.lazy ? this.props.totalRecords : data ? data.length : 0;\n }\n }, {\n key: \"isSingleSelectionMode\",\n value: function isSingleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'single';\n }\n }, {\n key: \"isMultipleSelectionMode\",\n value: function isMultipleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'multiple';\n }\n }, {\n key: \"isRowSelectionMode\",\n value: function isRowSelectionMode() {\n return this.isSingleSelectionMode() || this.isMultipleSelectionMode();\n }\n }, {\n key: \"getFrozenColumns\",\n value: function getFrozenColumns(columns) {\n var frozenColumns = null;\n\n var _iterator3 = _createForOfIteratorHelper(columns),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var col = _step3.value;\n\n if (col.props.frozen) {\n frozenColumns = frozenColumns || [];\n frozenColumns.push(col);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return frozenColumns;\n }\n }, {\n key: \"getScrollableColumns\",\n value: function getScrollableColumns(columns) {\n var scrollableColumns = null;\n\n var _iterator4 = _createForOfIteratorHelper(columns),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var col = _step4.value;\n\n if (!col.props.frozen) {\n scrollableColumns = scrollableColumns || [];\n scrollableColumns.push(col);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return scrollableColumns;\n }\n }, {\n key: \"filterLocal\",\n value: function filterLocal(value) {\n var filteredNodes = [];\n var filters = this.getFilters();\n var columns = React.Children.toArray(this.props.children);\n var isStrictMode = this.props.filterMode === 'strict';\n\n var _iterator5 = _createForOfIteratorHelper(value),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var node = _step5.value;\n\n var copyNode = _objectSpread({}, node);\n\n var localMatch = true;\n var globalMatch = false;\n\n for (var j = 0; j < columns.length; j++) {\n var col = columns[j];\n var filterMeta = filters ? filters[col.props.field] : null;\n var filterField = col.props.field;\n var filterValue = void 0,\n filterConstraint = void 0,\n paramsWithoutNode = void 0,\n options = void 0; //local\n\n if (filterMeta) {\n var filterMatchMode = filterMeta.matchMode || col.props.filterMatchMode || 'startsWith';\n filterValue = filterMeta.value;\n filterConstraint = filterMatchMode === 'custom' ? col.props.filterFunction : FilterService.filters[filterMatchMode];\n options = {\n rowData: node,\n filters: filters,\n props: this.props,\n column: {\n filterMeta: filterMeta,\n filterField: filterField,\n props: col.props\n }\n };\n paramsWithoutNode = {\n filterField: filterField,\n filterValue: filterValue,\n filterConstraint: filterConstraint,\n isStrictMode: isStrictMode,\n options: options\n };\n\n if (isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode)) || !isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode))) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n } //global\n\n\n if (this.props.globalFilter && !globalMatch) {\n var copyNodeForGlobal = _objectSpread({}, copyNode);\n\n filterValue = this.props.globalFilter;\n filterConstraint = FilterService.filters['contains'];\n paramsWithoutNode = {\n filterField: filterField,\n filterValue: filterValue,\n filterConstraint: filterConstraint,\n isStrictMode: isStrictMode\n };\n\n if (isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode)) || !isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode))) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n }\n\n var matches = localMatch;\n\n if (this.props.globalFilter) {\n matches = localMatch && globalMatch;\n }\n\n if (matches) {\n filteredNodes.push(copyNode);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return filteredNodes;\n }\n }, {\n key: \"findFilteredNodes\",\n value: function findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n var matched = false;\n\n if (node.children) {\n var childNodes = _toConsumableArray(node.children);\n\n node.children = [];\n\n var _iterator6 = _createForOfIteratorHelper(childNodes),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var childNode = _step6.value;\n\n var copyChildNode = _objectSpread({}, childNode);\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n\n if (matched) {\n return true;\n }\n }\n }\n }, {\n key: \"isFilterMatched\",\n value: function isFilterMatched(node, _ref) {\n var filterField = _ref.filterField,\n filterValue = _ref.filterValue,\n filterConstraint = _ref.filterConstraint,\n isStrictMode = _ref.isStrictMode,\n options = _ref.options;\n var matched = false;\n var dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);\n\n if (filterConstraint(dataFieldValue, filterValue, this.props.filterLocale, options)) {\n matched = true;\n }\n\n if (!matched || isStrictMode && !this.isNodeLeaf(node)) {\n matched = this.findFilteredNodes(node, {\n filterField: filterField,\n filterValue: filterValue,\n filterConstraint: filterConstraint,\n isStrictMode: isStrictMode\n }) || matched;\n }\n\n return matched;\n }\n }, {\n key: \"isNodeLeaf\",\n value: function isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n }\n }, {\n key: \"processValue\",\n value: function processValue() {\n var data = this.props.value;\n\n if (!this.props.lazy) {\n if (data && data.length) {\n if (this.getSortField() || this.getMultiSortMeta()) {\n if (this.props.sortMode === 'single') data = this.sortSingle(data);else if (this.props.sortMode === 'multiple') data = this.sortMultiple(data);\n }\n\n var localFilters = this.getFilters();\n\n if (localFilters || this.props.globalFilter) {\n data = this.filterLocal(data, localFilters);\n }\n }\n }\n\n return data;\n }\n }, {\n key: \"createTableHeader\",\n value: function createTableHeader(columns, columnGroup) {\n return /*#__PURE__*/React.createElement(TreeTableHeader, {\n columns: columns,\n columnGroup: columnGroup,\n tabIndex: this.props.tabIndex,\n onSort: this.onSort,\n sortField: this.getSortField(),\n sortOrder: this.getSortOrder(),\n multiSortMeta: this.getMultiSortMeta(),\n resizableColumns: this.props.resizableColumns,\n onResizeStart: this.onColumnResizeStart,\n reorderableColumns: this.props.reorderableColumns,\n onDragStart: this.onColumnDragStart,\n onDragOver: this.onColumnDragOver,\n onDragLeave: this.onColumnDragLeave,\n onDrop: this.onColumnDrop,\n onFilter: this.onFilter,\n filters: this.getFilters(),\n filterDelay: this.props.filterDelay\n });\n }\n }, {\n key: \"createTableFooter\",\n value: function createTableFooter(columns, columnGroup) {\n return /*#__PURE__*/React.createElement(TreeTableFooter, {\n columns: columns,\n columnGroup: columnGroup\n });\n }\n }, {\n key: \"createTableBody\",\n value: function createTableBody(value, columns) {\n return /*#__PURE__*/React.createElement(TreeTableBody, {\n value: value,\n columns: columns,\n expandedKeys: this.getExpandedKeys(),\n selectOnEdit: this.props.selectOnEdit,\n onToggle: this.onToggle,\n onExpand: this.props.onExpand,\n onCollapse: this.props.onCollapse,\n paginator: this.props.paginator,\n first: this.getFirst(),\n rows: this.getRows(),\n selectionMode: this.props.selectionMode,\n selectionKeys: this.props.selectionKeys,\n onSelectionChange: this.props.onSelectionChange,\n metaKeySelection: this.props.metaKeySelection,\n onRowClick: this.props.onRowClick,\n onSelect: this.props.onSelect,\n onUnselect: this.props.onUnselect,\n propagateSelectionUp: this.props.propagateSelectionUp,\n propagateSelectionDown: this.props.propagateSelectionDown,\n lazy: this.props.lazy,\n rowClassName: this.props.rowClassName,\n emptyMessage: this.props.emptyMessage,\n loading: this.props.loading,\n contextMenuSelectionKey: this.props.contextMenuSelectionKey,\n onContextMenuSelectionChange: this.props.onContextMenuSelectionChange,\n onContextMenu: this.props.onContextMenu\n });\n }\n }, {\n key: \"createPaginator\",\n value: function createPaginator(position, totalRecords) {\n var className = classNames('p-paginator-' + position, this.props.paginatorClassName);\n return /*#__PURE__*/React.createElement(Paginator, {\n first: this.getFirst(),\n rows: this.getRows(),\n pageLinkSize: this.props.pageLinkSize,\n className: className,\n onPageChange: this.onPageChange,\n template: this.props.paginatorTemplate,\n totalRecords: totalRecords,\n rowsPerPageOptions: this.props.rowsPerPageOptions,\n currentPageReportTemplate: this.props.currentPageReportTemplate,\n leftContent: this.props.paginatorLeft,\n rightContent: this.props.paginatorRight,\n alwaysShow: this.props.alwaysShowPaginator,\n dropdownAppendTo: this.props.paginatorDropdownAppendTo\n });\n }\n }, {\n key: \"createScrollableView\",\n value: function createScrollableView(value, columns, frozen, headerColumnGroup, footerColumnGroup) {\n var header = this.createTableHeader(columns, headerColumnGroup);\n var footer = this.createTableFooter(columns, footerColumnGroup);\n var body = this.createTableBody(value, columns);\n return /*#__PURE__*/React.createElement(TreeTableScrollableView, {\n columns: columns,\n header: header,\n body: body,\n footer: footer,\n scrollHeight: this.props.scrollHeight,\n frozen: frozen,\n frozenWidth: this.props.frozenWidth\n });\n }\n }, {\n key: \"renderScrollableTable\",\n value: function renderScrollableTable(value) {\n var columns = this.getColumns();\n var frozenColumns = this.getFrozenColumns(columns);\n var scrollableColumns = frozenColumns ? this.getScrollableColumns(columns) : columns;\n var frozenView, scrollableView;\n\n if (frozenColumns) {\n frozenView = this.createScrollableView(value, frozenColumns, true, this.props.frozenHeaderColumnGroup, this.props.frozenFooterColumnGroup);\n }\n\n scrollableView = this.createScrollableView(value, scrollableColumns, false, this.props.headerColumnGroup, this.props.footerColumnGroup);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-wrapper\"\n }, frozenView, scrollableView);\n }\n }, {\n key: \"renderRegularTable\",\n value: function renderRegularTable(value) {\n var _this6 = this;\n\n var columns = this.getColumns();\n var header = this.createTableHeader(columns, this.props.headerColumnGroup);\n var footer = this.createTableFooter(columns, this.props.footerColumnGroup);\n var body = this.createTableBody(value, columns);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-wrapper\"\n }, /*#__PURE__*/React.createElement(\"table\", {\n style: this.props.tableStyle,\n className: this.props.tableClassName,\n ref: function ref(el) {\n return _this6.table = el;\n }\n }, header, footer, body));\n }\n }, {\n key: \"renderTable\",\n value: function renderTable(value) {\n if (this.props.scrollable) return this.renderScrollableTable(value);else return this.renderRegularTable(value);\n }\n }, {\n key: \"renderLoader\",\n value: function renderLoader() {\n if (this.props.loading) {\n var iconClassName = classNames('p-treetable-loading-icon pi-spin', this.props.loadingIcon);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-loading\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-loading-overlay p-component-overlay\"\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: iconClassName\n })));\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this7 = this;\n\n var value = this.processValue();\n var className = classNames('p-treetable p-component', {\n 'p-treetable-hoverable-rows': this.props.rowHover,\n 'p-treetable-selectable': this.isRowSelectionMode(),\n 'p-treetable-resizable': this.props.resizableColumns,\n 'p-treetable-resizable-fit': this.props.resizableColumns && this.props.columnResizeMode === 'fit',\n 'p-treetable-auto-layout': this.props.autoLayout,\n 'p-treetable-striped': this.props.stripedRows,\n 'p-treetable-gridlines': this.props.showGridlines\n }, this.props.className);\n var table = this.renderTable(value);\n var totalRecords = this.getTotalRecords(value);\n var headerFacet = this.props.header && /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-header\"\n }, this.props.header);\n var footerFacet = this.props.footer && /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-footer\"\n }, this.props.footer);\n var paginatorTop = this.props.paginator && this.props.paginatorPosition !== 'bottom' && this.createPaginator('top', totalRecords);\n var paginatorBottom = this.props.paginator && this.props.paginatorPosition !== 'top' && this.createPaginator('bottom', totalRecords);\n var loader = this.renderLoader();\n var resizeHelper = this.props.resizableColumns && /*#__PURE__*/React.createElement(\"div\", {\n ref: function ref(el) {\n _this7.resizerHelper = el;\n },\n className: \"p-column-resizer-helper\",\n style: {\n display: 'none'\n }\n });\n var reorderIndicatorUp = this.props.reorderableColumns && /*#__PURE__*/React.createElement(\"span\", {\n ref: function ref(el) {\n return _this7.reorderIndicatorUp = el;\n },\n className: \"pi pi-arrow-down p-datatable-reorder-indicator-up\",\n style: {\n position: 'absolute',\n display: 'none'\n }\n });\n var reorderIndicatorDown = this.props.reorderableColumns && /*#__PURE__*/React.createElement(\"span\", {\n ref: function ref(el) {\n return _this7.reorderIndicatorDown = el;\n },\n className: \"pi pi-arrow-up p-datatable-reorder-indicator-down\",\n style: {\n position: 'absolute',\n display: 'none'\n }\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n id: this.props.id,\n className: className,\n style: this.props.style,\n ref: function ref(el) {\n return _this7.container = el;\n },\n \"data-scrollselectors\": \".p-treetable-scrollable-body\"\n }, loader, headerFacet, paginatorTop, table, paginatorBottom, footerFacet, resizeHelper, reorderIndicatorUp, reorderIndicatorDown);\n }\n }]);\n\n return TreeTable;\n}(Component);\n\n_defineProperty(TreeTable, \"defaultProps\", {\n id: null,\n value: null,\n header: null,\n footer: null,\n style: null,\n className: null,\n tableStyle: null,\n tableClassName: null,\n expandedKeys: null,\n paginator: false,\n paginatorPosition: 'bottom',\n alwaysShowPaginator: true,\n paginatorClassName: null,\n paginatorTemplate: 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown',\n paginatorLeft: null,\n paginatorRight: null,\n paginatorDropdownAppendTo: null,\n pageLinkSize: 5,\n rowsPerPageOptions: null,\n currentPageReportTemplate: '({currentPage} of {totalPages})',\n first: null,\n rows: null,\n totalRecords: null,\n lazy: false,\n sortField: null,\n sortOrder: null,\n multiSortMeta: null,\n sortMode: 'single',\n defaultSortOrder: 1,\n removableSort: false,\n selectionMode: null,\n selectionKeys: null,\n contextMenuSelectionKey: null,\n metaKeySelection: true,\n selectOnEdit: true,\n propagateSelectionUp: true,\n propagateSelectionDown: true,\n autoLayout: false,\n rowClassName: null,\n loading: false,\n loadingIcon: 'pi pi-spinner',\n tabIndex: 0,\n scrollable: false,\n scrollHeight: null,\n reorderableColumns: false,\n headerColumnGroup: null,\n footerColumnGroup: null,\n frozenHeaderColumnGroup: null,\n frozenFooterColumnGroup: null,\n frozenWidth: null,\n resizableColumns: false,\n columnResizeMode: 'fit',\n emptyMessage: null,\n filters: null,\n globalFilter: null,\n filterMode: 'lenient',\n filterDelay: 300,\n filterLocale: undefined,\n rowHover: false,\n showGridlines: false,\n stripedRows: false,\n onFilter: null,\n onExpand: null,\n onCollapse: null,\n onToggle: null,\n onPage: null,\n onSort: null,\n onSelect: null,\n onUnselect: null,\n onRowClick: null,\n onSelectionChange: null,\n onContextMenuSelectionChange: null,\n onColumnResizeEnd: null,\n onColReorder: null,\n onContextMenu: null\n});\n\nexport { TreeTable };","map":{"version":3,"names":["React","Component","localeOption","FilterService","DomHandler","DomHandler$1","classNames","ObjectUtils","Paginator","InputText","OverlayService","Ripple","_arrayLikeToArray$5","arr","len","length","i","arr2","Array","_arrayWithoutHoles","isArray","_iterableToArray","iter","Symbol","iterator","from","_unsupportedIterableToArray$5","o","minLen","n","Object","prototype","toString","call","slice","constructor","name","test","_nonIterableSpread","TypeError","_toConsumableArray","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","_createClass","protoProps","staticProps","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","value","_typeof","obj","_possibleConstructorReturn","_getPrototypeOf","getPrototypeOf","_defineProperty","_createForOfIteratorHelper$4","allowArrayLike","it","_unsupportedIterableToArray$4","F","s","done","e","_e","f","normalCompletion","didErr","err","step","next","_e2","_arrayLikeToArray$4","_createSuper$6","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct$6","_createSuperInternal","Super","result","NewTarget","Reflect","construct","arguments","apply","sham","Proxy","Boolean","valueOf","TreeTableHeader","_Component","_super","_this","state","badgeVisible","onFilterInput","bind","onHeaderClick","event","column","sortable","targetNode","hasClass","parentElement","onSort","originalEvent","sortField","field","sortFunction","clearSelection","onHeaderMouseDown","reorderableColumns","reorderable","nodeName","currentTarget","draggable","onHeaderKeyDown","preventDefault","getMultiSortMetaDataIndex","multiSortMeta","onResizerMouseDown","resizableColumns","onResizeStart","columnEl","onDragStart","onDragOver","onDragLeave","onDrop","_this2","filter","onFilter","filterTimeout","clearTimeout","filterValue","setTimeout","matchMode","filterMatchMode","filterDelay","hasColumnFilter","columns","_iterator","_step","col","renderSortIcon","sorted","sortOrder","sortIcon","sortIconClassName","createElement","className","renderResizer","_this3","onMouseDown","getAriaSort","renderSortBadge","sortMetaDataIndex","renderHeaderCell","options","_this4","filterElement","renderFilter","onInput","type","filterType","defaultValue","filters","placeholder","filterPlaceholder","maxLength","filterMaxLength","filterOnly","columnKey","index","filterHeaderClassName","style","filterHeaderStyle","rowSpan","colSpan","multiSortMetaData","singleSorted","multipleSorted","order","sortIconElement","ariaSortData","sortBadge","headerClassName","resizer","headerStyle","tabIndex","onClick","onKeyDown","header","renderHeaderRow","row","_this5","rowColumns","Children","toArray","children","rowHeaderCells","map","renderColumnGroup","_this6","rows","columnGroup","renderColumns","_this7","Fragment","render","content","getDerivedStateFromProps","nextProps","prevState","_createForOfIteratorHelper$3","_unsupportedIterableToArray$3","_arrayLikeToArray$3","innerWidth","el","width","offsetWidth","getComputedStyle","parseFloat","paddingLeft","paddingRight","getWindowScrollTop","doc","document","documentElement","window","pageYOffset","scrollTop","clientTop","getWindowScrollLeft","pageXOffset","scrollLeft","clientLeft","getOuterWidth","margin","getBoundingClientRect","marginLeft","marginRight","getOuterHeight","height","offsetHeight","marginTop","marginBottom","getClientHeight","clientHeight","getClientWidth","clientWidth","getViewport","win","d","g","getElementsByTagName","w","h","innerHeight","getOffset","rect","top","body","left","element","parentNode","childNodes","num","nodeType","addMultipleClasses","classList","styles","split","add","_styles","_i","removeMultipleClasses","remove","_styles2","_i2","replace","RegExp","join","addClass","removeClass","contains","find","selector","querySelectorAll","findSingle","querySelector","getHeight","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","getWidth","borderLeftWidth","borderRightWidth","alignOverlay","overlay","appendTo","calculateMinWidth","undefined","relativePosition","minWidth","absolutePosition","elementDimensions","offsetParent","getHiddenElementDimensions","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","targetOffset","windowScrollTop","windowScrollLeft","viewport","transformOrigin","Math","max","targetHeight","flipfitCollision","my","at","callback","myArr","atArr","getPositionValue","isOffset","substring","search","position","x","y","offsetX","offsetY","myOffset","totalOffset","alignWithAt","count","right","bottom","center","axis","isFunction","findCollisionPosition","isAxisY","myXPosition","myYPosition","concat","getParents","parents","getScrollableParents","scrollableParents","overflowRegex","overflowCheck","node","styleDeclaration","getPropertyValue","parent","scrollSelectors","dataset","selectors","_iterator2","_step2","push","getHiddenElementOuterHeight","visibility","display","elementHeight","getHiddenElementOuterWidth","elementWidth","dimensions","fadeIn","duration","opacity","last","Date","tick","getTime","requestAnimationFrame","fadeOut","interval","gap","fading","setInterval","clearInterval","getUserAgent","navigator","userAgent","isIOS","isAndroid","isTouchDevice","maxTouchPoints","msMaxTouchPoints","appendChild","isElement","nativeElement","Error","removeChild","HTMLElement","scrollInView","container","item","borderTopValue","borderTop","paddingTopValue","containerRect","itemRect","offset","scroll","itemHeight","getSelection","empty","removeAllRanges","rangeCount","getRangeAt","getClientRects","error","calculateScrollbarWidth","calculatedScrollbarWidth","scrollDiv","scrollbarWidth","getBrowser","browser","matched","resolveUserAgent","version","ua","toLowerCase","match","exec","indexOf","isVisible","isExist","hasDOM","getFocusableElements","focusableElements","visibleFocusableElements","_iterator3","_step3","focusableElement","getFirstFocusableElement","getLastFocusableElement","getCursorOffset","prevText","nextText","currentText","ghostDiv","pointerEvents","overflow","padding","border","overflowWrap","whiteSpace","lineHeight","innerHTML","ghostSpan","textContent","text","createTextNode","offsetLeft","offsetTop","abs","invokeElementMethod","methodName","args","isClickable","applyStyle","cssText","prop","exportCSV","csv","filename","blob","Blob","msSaveOrOpenBlob","isDownloaded","saveAs","src","URL","createObjectURL","open","encodeURI","file","link","download","setAttribute","click","createInlineStyle","nonce","styleElement","process","env","REACT_APP_CSS_NONCE","head","removeInlineStyle","_extends","assign","source","hasOwnProperty","_createSuper$5","_isNativeReflectConstruct$5","TreeTableBodyCell","editor","onEditorFocus","editing","selectOnEdit","selected","selfClick","setState","bindDocumentEditListener","overlayEventListener","isOutsideClicked","on","which","switchCellToViewMode","documentEditListener","addEventListener","isSameNode","unbindDocumentEditListener","removeEventListener","closeCell","off","cellEditValidator","valid","columnProps","componentDidUpdate","tabindexTimeout","focusable","activeElement","hasAttribute","focus","keyHelper","componentWillUnmount","bodyClassName","bodyStyle","getJSXElement","rowData","data","resolveFieldData","rowIndex","editorKeyHelper","ref","onFocus","_createForOfIteratorHelper$2","_unsupportedIterableToArray$2","_arrayLikeToArray$2","ownKeys$2","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread$2","forEach","getOwnPropertyDescriptors","defineProperties","_createSuper$4","_isNativeReflectConstruct$4","TreeTableRow","onTogglerClick","onTouchEnd","propagateUp","onCheckboxChange","onCheckboxFocus","onCheckboxBlur","onRightClick","isLeaf","leaf","isExpanded","collapse","expand","stopPropagation","expandedKeys","onToggle","invokeToggleEvents","expanded","onExpand","onCollapse","onRowClick","nodeTouched","checked","isChecked","selectionKeys","propagateSelectionDown","propagateDown","propagateSelectionUp","onPropagateUp","check","onUnselect","onSelect","onSelectionChange","checkboxBox","checkboxRef","checkedChildCount","childPartialSelected","child","partialChecked","onContextMenuSelectionChange","onContextMenu","rowElement","nextRow","nextElementSibling","previousRow","previousElementSibling","isSelected","selectionMode","isPartialChecked","renderToggler","iconClassName","level","renderCheckbox","selectable","icon","role","onBlur","renderCell","toggler","checkbox","expander","renderChildren","childNode","JSON","stringify","metaKeySelection","rowClassName","contextMenuSelectionKey","cells","ownKeys$1","_objectSpread$1","_createForOfIteratorHelper$1","_unsupportedIterableToArray$1","_arrayLikeToArray$1","_createSuper$3","_isNativeReflectConstruct$3","TreeTableBody","createRow","flattenizeTree","nodes","isExpandedKey","isSingleSelectionMode","isMultipleSelectionMode","metaSelection","flatKeys","findIndex","shiftKey","anchorRowIndex","rangeStart","min","rangeEnd","rowKey","metaKey","ctrlKey","renderRows","paginator","lazy","rpp","startIndex","first","endIndex","renderEmptyMessage","loading","emptyMessage","_createSuper$2","_isNativeReflectConstruct$2","TreeTableFooter","renderFooterCell","footerClassName","footerStyle","footer","renderFooterRow","rowFooterCells","headerCells","hasFooter","_createSuper$1","_isNativeReflectConstruct$1","TreeTableScrollableView","onHeaderScroll","onBodyScroll","componentDidMount","setScrollHeight","frozen","scrollBarWidth","scrollHeaderBox","scrollFooterBox","scrollBody","scrollHeight","datatableContainer","findDataTableContainer","containerHeight","relativeHeight","parseInt","staticHeight","scrollBodyHeight","maxHeight","scrollHeader","frozenView","frozenScrollBody","calculateRowHeight","scrollTable","rowHeight","renderColGroup","frozenWidth","colGroup","scrollableBodyStyle","overflowY","onScroll","scrollFooter","frozenBody","_createForOfIteratorHelper","_unsupportedIterableToArray","_arrayLikeToArray","ownKeys","_objectSpread","_createSuper","_isNativeReflectConstruct","TreeTable","onPage","onPageChange","onColumnResizeStart","onColumnDragStart","onColumnDragOver","onColumnDragLeave","onColumnDrop","defaultSortOrder","eventMeta","columnSortable","columnSortFunction","columnField","sortMode","getMultiSortMeta","sortMeta","getCalculatedSortOrder","newMetaData","addSortMeta","removableSort","removeSortMeta","getSortField","getSortOrder","currentOrder","meta","splice","sortSingle","sortNodes","sort","node1","node2","value1","value2","localeCompare","numeric","sortMultiple","sortMultipleNodes","multisortField","String","mode","currentFilters","getFilters","newFilters","isFilterBlank","hasFilter","trim","containerLeft","resizeColumn","resizeColumnProps","columnResizing","lastResizerHelperX","pageX","bindColumnResizeEvents","onColumnResize","resizerHelper","onColumnResizeEnd","delta","columnWidth","newColumnWidth","columnResizeMode","nextColumn","nextColumnWidth","scrollable","scrollableView","findParentScrollableView","scrollableBodyTable","scrollableHeaderTable","scrollableFooterTable","resizeColumnIndex","resizeColGroup","_scrollableView","_scrollableBodyTable","_scrollableHeaderTable","_scrollableFooterTable","_resizeColumnIndex","table","unbindColumnResizeEvents","nextCol","documentColumnResizeListener","documentColumnResizeEndListener","iconWidth","reorderIndicatorUp","iconHeight","draggedColumnEl","findParentHeader","draggedColumn","dataTransfer","setData","dropHeader","containerOffset","dropHeaderOffset","targetLeft","columnCenter","reorderIndicatorDown","ceil","dropPosition","dragIndex","dropIndex","allowDrop","columnOrder","getColumns","isSameColumn","col1","col2","equals","dragColIndex","dropColIndex","reorderArray","_column","onColReorder","getExpandedKeys","getFirst","getRows","findColumnByKey","orderedColumns","getTotalRecords","totalRecords","isRowSelectionMode","getFrozenColumns","frozenColumns","getScrollableColumns","scrollableColumns","_iterator4","_step4","filterLocal","filteredNodes","isStrictMode","filterMode","_iterator5","_step5","copyNode","localMatch","globalMatch","j","filterMeta","filterField","filterConstraint","paramsWithoutNode","filterFunction","findFilteredNodes","isFilterMatched","globalFilter","copyNodeForGlobal","matches","_iterator6","_step6","copyChildNode","_ref","dataFieldValue","filterLocale","isNodeLeaf","processValue","localFilters","createTableHeader","createTableFooter","createTableBody","createPaginator","paginatorClassName","pageLinkSize","template","paginatorTemplate","rowsPerPageOptions","currentPageReportTemplate","leftContent","paginatorLeft","rightContent","paginatorRight","alwaysShow","alwaysShowPaginator","dropdownAppendTo","paginatorDropdownAppendTo","createScrollableView","headerColumnGroup","footerColumnGroup","renderScrollableTable","frozenHeaderColumnGroup","frozenFooterColumnGroup","renderRegularTable","tableStyle","tableClassName","renderTable","renderLoader","loadingIcon","rowHover","autoLayout","stripedRows","showGridlines","headerFacet","footerFacet","paginatorTop","paginatorPosition","paginatorBottom","loader","resizeHelper","id"],"sources":["/Users/paolasanchez/Desktop/Pry4/Katoikia/katoikia-app/web-ui/sakai-react/node_modules/primereact/treetable/treetable.esm.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { localeOption, FilterService } from 'primereact/api';\nimport { DomHandler as DomHandler$1, classNames, ObjectUtils } from 'primereact/utils';\nimport { Paginator } from 'primereact/paginator';\nimport { InputText } from 'primereact/inputtext';\nimport { OverlayService } from 'primereact/overlayservice';\nimport { Ripple } from 'primereact/ripple';\n\nfunction _arrayLikeToArray$5(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray$5(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray$5(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray$5(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray$5(arr) || _nonIterableSpread();\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _createForOfIteratorHelper$4(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); }\n\nfunction _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$6(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$6() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTableHeader = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableHeader, _Component);\n\n var _super = _createSuper$6(TreeTableHeader);\n\n function TreeTableHeader(props) {\n var _this;\n\n _classCallCheck(this, TreeTableHeader);\n\n _this = _super.call(this, props);\n _this.state = {\n badgeVisible: false\n };\n _this.onFilterInput = _this.onFilterInput.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableHeader, [{\n key: \"onHeaderClick\",\n value: function onHeaderClick(event, column) {\n if (column.props.sortable) {\n var targetNode = event.target;\n\n if (DomHandler$1.hasClass(targetNode, 'p-sortable-column') || DomHandler$1.hasClass(targetNode, 'p-column-title') || DomHandler$1.hasClass(targetNode, 'p-sortable-column-icon') || DomHandler$1.hasClass(targetNode.parentElement, 'p-sortable-column-icon')) {\n this.props.onSort({\n originalEvent: event,\n sortField: column.props.sortField || column.props.field,\n sortFunction: column.props.sortFunction,\n sortable: column.props.sortable\n });\n DomHandler$1.clearSelection();\n }\n }\n }\n }, {\n key: \"onHeaderMouseDown\",\n value: function onHeaderMouseDown(event, column) {\n if (this.props.reorderableColumns && column.props.reorderable) {\n if (event.target.nodeName !== 'INPUT') event.currentTarget.draggable = true;else if (event.target.nodeName === 'INPUT') event.currentTarget.draggable = false;\n }\n }\n }, {\n key: \"onHeaderKeyDown\",\n value: function onHeaderKeyDown(event, column) {\n if (event.key === 'Enter') {\n this.onHeaderClick(event, column);\n event.preventDefault();\n }\n }\n }, {\n key: \"getMultiSortMetaDataIndex\",\n value: function getMultiSortMetaDataIndex(column) {\n if (this.props.multiSortMeta) {\n for (var i = 0; i < this.props.multiSortMeta.length; i++) {\n if (this.props.multiSortMeta[i].field === column.props.field) {\n return i;\n }\n }\n }\n\n return -1;\n }\n }, {\n key: \"onResizerMouseDown\",\n value: function onResizerMouseDown(event, column) {\n if (this.props.resizableColumns && this.props.onResizeStart) {\n this.props.onResizeStart({\n originalEvent: event,\n columnEl: event.target.parentElement,\n column: column\n });\n }\n }\n }, {\n key: \"onDragStart\",\n value: function onDragStart(event, column) {\n if (this.props.onDragStart) {\n this.props.onDragStart({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onDragOver\",\n value: function onDragOver(event, column) {\n if (this.props.onDragOver) {\n this.props.onDragOver({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onDragLeave\",\n value: function onDragLeave(event, column) {\n if (this.props.onDragLeave) {\n this.props.onDragLeave({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onDrop\",\n value: function onDrop(event, column) {\n if (this.props.onDrop) {\n this.props.onDrop({\n originalEvent: event,\n column: column\n });\n }\n }\n }, {\n key: \"onFilterInput\",\n value: function onFilterInput(e, column) {\n var _this2 = this;\n\n if (column.props.filter && this.props.onFilter) {\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n\n var filterValue = e.target.value;\n this.filterTimeout = setTimeout(function () {\n _this2.props.onFilter({\n value: filterValue,\n field: column.props.field,\n matchMode: column.props.filterMatchMode || 'startsWith'\n });\n\n _this2.filterTimeout = null;\n }, this.props.filterDelay);\n }\n }\n }, {\n key: \"hasColumnFilter\",\n value: function hasColumnFilter(columns) {\n if (columns) {\n var _iterator = _createForOfIteratorHelper$4(columns),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var col = _step.value;\n\n if (col.props.filter) {\n return true;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return false;\n }\n }, {\n key: \"renderSortIcon\",\n value: function renderSortIcon(column, sorted, sortOrder) {\n if (column.props.sortable) {\n var sortIcon = sorted ? sortOrder < 0 ? 'pi-sort-amount-down' : 'pi-sort-amount-up-alt' : 'pi-sort-alt';\n var sortIconClassName = classNames('p-sortable-column-icon', 'pi pi-fw', sortIcon);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: sortIconClassName\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"renderResizer\",\n value: function renderResizer(column) {\n var _this3 = this;\n\n if (this.props.resizableColumns) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"p-column-resizer p-clickable\",\n onMouseDown: function onMouseDown(e) {\n return _this3.onResizerMouseDown(e, column);\n }\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"getAriaSort\",\n value: function getAriaSort(column, sorted, sortOrder) {\n if (column.props.sortable) {\n var sortIcon = sorted ? sortOrder < 0 ? 'pi-sort-down' : 'pi-sort-up' : 'pi-sort';\n if (sortIcon === 'pi-sort-down') return 'descending';else if (sortIcon === 'pi-sort-up') return 'ascending';else return 'none';\n } else {\n return null;\n }\n }\n }, {\n key: \"renderSortBadge\",\n value: function renderSortBadge(sortMetaDataIndex) {\n if (sortMetaDataIndex !== -1 && this.state.badgeVisible) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"p-sortable-column-badge\"\n }, sortMetaDataIndex + 1);\n }\n\n return null;\n }\n }, {\n key: \"renderHeaderCell\",\n value: function renderHeaderCell(column, options) {\n var _this4 = this;\n\n var filterElement;\n\n if (column.props.filter && options.renderFilter) {\n filterElement = column.props.filterElement || /*#__PURE__*/React.createElement(InputText, {\n onInput: function onInput(e) {\n return _this4.onFilterInput(e, column);\n },\n type: this.props.filterType,\n defaultValue: this.props.filters && this.props.filters[column.props.field] ? this.props.filters[column.props.field].value : null,\n className: \"p-column-filter\",\n placeholder: column.props.filterPlaceholder,\n maxLength: column.props.filterMaxLength\n });\n }\n\n if (options.filterOnly) {\n return /*#__PURE__*/React.createElement(\"th\", {\n key: column.props.columnKey || column.props.field || options.index,\n className: classNames('p-filter-column', column.props.filterHeaderClassName),\n style: column.props.filterHeaderStyle || column.props.style,\n rowSpan: column.props.rowSpan,\n colSpan: column.props.colSpan\n }, filterElement);\n } else {\n var sortMetaDataIndex = this.getMultiSortMetaDataIndex(column);\n var multiSortMetaData = sortMetaDataIndex !== -1 ? this.props.multiSortMeta[sortMetaDataIndex] : null;\n var singleSorted = column.props.field === this.props.sortField;\n var multipleSorted = multiSortMetaData !== null;\n var sorted = column.props.sortable && (singleSorted || multipleSorted);\n var sortOrder = 0;\n if (singleSorted) sortOrder = this.props.sortOrder;else if (multipleSorted) sortOrder = multiSortMetaData.order;\n var sortIconElement = this.renderSortIcon(column, sorted, sortOrder);\n var ariaSortData = this.getAriaSort(column, sorted, sortOrder);\n var sortBadge = this.renderSortBadge(sortMetaDataIndex);\n var className = classNames(column.props.headerClassName || column.props.className, {\n 'p-sortable-column': column.props.sortable,\n 'p-highlight': sorted,\n 'p-resizable-column': this.props.resizableColumns\n });\n var resizer = this.renderResizer(column);\n return /*#__PURE__*/React.createElement(\"th\", {\n key: column.columnKey || column.field || options.index,\n className: className,\n style: column.props.headerStyle || column.props.style,\n tabIndex: column.props.sortable ? this.props.tabIndex : null,\n onClick: function onClick(e) {\n return _this4.onHeaderClick(e, column);\n },\n onMouseDown: function onMouseDown(e) {\n return _this4.onHeaderMouseDown(e, column);\n },\n onKeyDown: function onKeyDown(e) {\n return _this4.onHeaderKeyDown(e, column);\n },\n rowSpan: column.props.rowSpan,\n colSpan: column.props.colSpan,\n \"aria-sort\": ariaSortData,\n onDragStart: function onDragStart(e) {\n return _this4.onDragStart(e, column);\n },\n onDragOver: function onDragOver(e) {\n return _this4.onDragOver(e, column);\n },\n onDragLeave: function onDragLeave(e) {\n return _this4.onDragLeave(e, column);\n },\n onDrop: function onDrop(e) {\n return _this4.onDrop(e, column);\n }\n }, resizer, /*#__PURE__*/React.createElement(\"span\", {\n className: \"p-column-title\"\n }, column.props.header), sortIconElement, sortBadge, filterElement);\n }\n }\n }, {\n key: \"renderHeaderRow\",\n value: function renderHeaderRow(row, index) {\n var _this5 = this;\n\n var rowColumns = React.Children.toArray(row.props.children);\n var rowHeaderCells = rowColumns.map(function (col, i) {\n return _this5.renderHeaderCell(col, {\n index: i,\n filterOnly: false,\n renderFilter: true\n });\n });\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: index\n }, rowHeaderCells);\n }\n }, {\n key: \"renderColumnGroup\",\n value: function renderColumnGroup() {\n var _this6 = this;\n\n var rows = React.Children.toArray(this.props.columnGroup.props.children);\n return rows.map(function (row, i) {\n return _this6.renderHeaderRow(row, i);\n });\n }\n }, {\n key: \"renderColumns\",\n value: function renderColumns(columns) {\n var _this7 = this;\n\n if (columns) {\n if (this.hasColumnFilter(columns)) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"tr\", null, columns.map(function (col, i) {\n return _this7.renderHeaderCell(col, {\n index: i,\n filterOnly: false,\n renderFilter: false\n });\n })), /*#__PURE__*/React.createElement(\"tr\", null, columns.map(function (col, i) {\n return _this7.renderHeaderCell(col, {\n index: i,\n filterOnly: true,\n renderFilter: true\n });\n })));\n } else {\n return /*#__PURE__*/React.createElement(\"tr\", null, columns.map(function (col, i) {\n return _this7.renderHeaderCell(col, {\n index: i,\n filterOnly: false,\n renderFilter: false\n });\n }));\n }\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var content = this.props.columnGroup ? this.renderColumnGroup() : this.renderColumns(this.props.columns);\n return /*#__PURE__*/React.createElement(\"thead\", {\n className: \"p-treetable-thead\"\n }, content);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n return {\n badgeVisible: nextProps.multiSortMeta && nextProps.multiSortMeta.length > 1\n };\n }\n }]);\n\n return TreeTableHeader;\n}(Component);\n\nfunction _createForOfIteratorHelper$3(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); }\n\nfunction _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar DomHandler = /*#__PURE__*/function () {\n function DomHandler() {\n _classCallCheck(this, DomHandler);\n }\n\n _createClass(DomHandler, null, [{\n key: \"innerWidth\",\n value: function innerWidth(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"width\",\n value: function width(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"getWindowScrollTop\",\n value: function getWindowScrollTop() {\n var doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n }, {\n key: \"getWindowScrollLeft\",\n value: function getWindowScrollLeft() {\n var doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n }, {\n key: \"getOuterWidth\",\n value: function getOuterWidth(el, margin) {\n if (el) {\n var width = el.offsetWidth || el.getBoundingClientRect().width;\n\n if (margin) {\n var style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"getOuterHeight\",\n value: function getOuterHeight(el, margin) {\n if (el) {\n var height = el.offsetHeight || el.getBoundingClientRect().height;\n\n if (margin) {\n var style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n return 0;\n }\n }, {\n key: \"getClientHeight\",\n value: function getClientHeight(el, margin) {\n if (el) {\n var height = el.clientHeight;\n\n if (margin) {\n var style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n return 0;\n }\n }, {\n key: \"getClientWidth\",\n value: function getClientWidth(el, margin) {\n if (el) {\n var width = el.clientWidth;\n\n if (margin) {\n var style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n var win = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n w = win.innerWidth || e.clientWidth || g.clientWidth,\n h = win.innerHeight || e.clientHeight || g.clientHeight;\n return {\n width: w,\n height: h\n };\n }\n }, {\n key: \"getOffset\",\n value: function getOffset(el) {\n if (el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n\n return {\n top: 'auto',\n left: 'auto'\n };\n }\n }, {\n key: \"index\",\n value: function index(element) {\n if (element) {\n var children = element.parentNode.childNodes;\n var num = 0;\n\n for (var i = 0; i < children.length; i++) {\n if (children[i] === element) return num;\n if (children[i].nodeType === 1) num++;\n }\n }\n\n return -1;\n }\n }, {\n key: \"addMultipleClasses\",\n value: function addMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n var styles = className.split(' ');\n\n for (var i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n var _styles = className.split(' ');\n\n for (var _i = 0; _i < _styles.length; _i++) {\n element.className += ' ' + _styles[_i];\n }\n }\n }\n }\n }, {\n key: \"removeMultipleClasses\",\n value: function removeMultipleClasses(element, className) {\n if (element && className) {\n if (element.classList) {\n var styles = className.split(' ');\n\n for (var i = 0; i < styles.length; i++) {\n element.classList.remove(styles[i]);\n }\n } else {\n var _styles2 = className.split(' ');\n\n for (var _i2 = 0; _i2 < _styles2.length; _i2++) {\n element.className = element.className.replace(new RegExp('(^|\\\\b)' + _styles2[_i2].split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n }\n }\n }, {\n key: \"addClass\",\n value: function addClass(element, className) {\n if (element && className) {\n if (element.classList) element.classList.add(className);else element.className += ' ' + className;\n }\n }\n }, {\n key: \"removeClass\",\n value: function removeClass(element, className) {\n if (element && className) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n }, {\n key: \"hasClass\",\n value: function hasClass(element, className) {\n if (element) {\n if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n }\n }, {\n key: \"find\",\n value: function find(element, selector) {\n return element ? Array.from(element.querySelectorAll(selector)) : [];\n }\n }, {\n key: \"findSingle\",\n value: function findSingle(element, selector) {\n if (element) {\n return element.querySelector(selector);\n }\n\n return null;\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(el) {\n if (el) {\n var height = el.offsetHeight;\n var style = getComputedStyle(el);\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n return height;\n }\n\n return 0;\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(el) {\n if (el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return width;\n }\n\n return 0;\n }\n }, {\n key: \"alignOverlay\",\n value: function alignOverlay(overlay, target, appendTo) {\n var calculateMinWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (overlay && target) {\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n calculateMinWidth && (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px');\n this.absolutePosition(overlay, target);\n }\n }\n }\n }, {\n key: \"absolutePosition\",\n value: function absolutePosition(element, target) {\n if (element) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var elementOuterHeight = elementDimensions.height;\n var elementOuterWidth = elementDimensions.width;\n var targetOuterHeight = target.offsetHeight;\n var targetOuterWidth = target.offsetWidth;\n var targetOffset = target.getBoundingClientRect();\n var windowScrollTop = this.getWindowScrollTop();\n var windowScrollLeft = this.getWindowScrollLeft();\n var viewport = this.getViewport();\n var top, left;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n\n if (top < 0) {\n top = windowScrollTop;\n }\n\n element.style.transformOrigin = 'bottom';\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + targetOuterWidth + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);else left = targetOffset.left + windowScrollLeft;\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }\n }, {\n key: \"relativePosition\",\n value: function relativePosition(element, target) {\n if (element) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var targetHeight = target.offsetHeight;\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var top, left;\n\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = -1 * elementDimensions.height;\n\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n\n element.style.transformOrigin = 'bottom';\n } else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = targetOffset.left * -1;\n } else if (targetOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = 0;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }\n }, {\n key: \"flipfitCollision\",\n value: function flipfitCollision(element, target) {\n var _this = this;\n\n var my = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left top';\n var at = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'left bottom';\n var callback = arguments.length > 4 ? arguments[4] : undefined;\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var myArr = my.split(' ');\n var atArr = at.split(' ');\n\n var getPositionValue = function getPositionValue(arr, isOffset) {\n return isOffset ? +arr.substring(arr.search(/(\\+|-)/g)) || 0 : arr.substring(0, arr.search(/(\\+|-)/g)) || arr;\n };\n\n var position = {\n my: {\n x: getPositionValue(myArr[0]),\n y: getPositionValue(myArr[1] || myArr[0]),\n offsetX: getPositionValue(myArr[0], true),\n offsetY: getPositionValue(myArr[1] || myArr[0], true)\n },\n at: {\n x: getPositionValue(atArr[0]),\n y: getPositionValue(atArr[1] || atArr[0]),\n offsetX: getPositionValue(atArr[0], true),\n offsetY: getPositionValue(atArr[1] || atArr[0], true)\n }\n };\n var myOffset = {\n left: function left() {\n var totalOffset = position.my.offsetX + position.at.offsetX;\n return totalOffset + targetOffset.left + (position.my.x === 'left' ? 0 : -1 * (position.my.x === 'center' ? _this.getOuterWidth(element) / 2 : _this.getOuterWidth(element)));\n },\n top: function top() {\n var totalOffset = position.my.offsetY + position.at.offsetY;\n return totalOffset + targetOffset.top + (position.my.y === 'top' ? 0 : -1 * (position.my.y === 'center' ? _this.getOuterHeight(element) / 2 : _this.getOuterHeight(element)));\n }\n };\n var alignWithAt = {\n count: {\n x: 0,\n y: 0\n },\n left: function left() {\n var left = myOffset.left();\n var scrollLeft = DomHandler.getWindowScrollLeft();\n element.style.left = left + scrollLeft + 'px';\n\n if (this.count.x === 2) {\n element.style.left = scrollLeft + 'px';\n this.count.x = 0;\n } else if (left < 0) {\n this.count.x++;\n position.my.x = 'left';\n position.at.x = 'right';\n position.my.offsetX *= -1;\n position.at.offsetX *= -1;\n this.right();\n }\n },\n right: function right() {\n var left = myOffset.left() + DomHandler.getOuterWidth(target);\n var scrollLeft = DomHandler.getWindowScrollLeft();\n element.style.left = left + scrollLeft + 'px';\n\n if (this.count.x === 2) {\n element.style.left = viewport.width - DomHandler.getOuterWidth(element) + scrollLeft + 'px';\n this.count.x = 0;\n } else if (left + DomHandler.getOuterWidth(element) > viewport.width) {\n this.count.x++;\n position.my.x = 'right';\n position.at.x = 'left';\n position.my.offsetX *= -1;\n position.at.offsetX *= -1;\n this.left();\n }\n },\n top: function top() {\n var top = myOffset.top();\n var scrollTop = DomHandler.getWindowScrollTop();\n element.style.top = top + scrollTop + 'px';\n\n if (this.count.y === 2) {\n element.style.left = scrollTop + 'px';\n this.count.y = 0;\n } else if (top < 0) {\n this.count.y++;\n position.my.y = 'top';\n position.at.y = 'bottom';\n position.my.offsetY *= -1;\n position.at.offsetY *= -1;\n this.bottom();\n }\n },\n bottom: function bottom() {\n var top = myOffset.top() + DomHandler.getOuterHeight(target);\n var scrollTop = DomHandler.getWindowScrollTop();\n element.style.top = top + scrollTop + 'px';\n\n if (this.count.y === 2) {\n element.style.left = viewport.height - DomHandler.getOuterHeight(element) + scrollTop + 'px';\n this.count.y = 0;\n } else if (top + DomHandler.getOuterHeight(target) > viewport.height) {\n this.count.y++;\n position.my.y = 'bottom';\n position.at.y = 'top';\n position.my.offsetY *= -1;\n position.at.offsetY *= -1;\n this.top();\n }\n },\n center: function center(axis) {\n if (axis === 'y') {\n var top = myOffset.top() + DomHandler.getOuterHeight(target) / 2;\n element.style.top = top + DomHandler.getWindowScrollTop() + 'px';\n\n if (top < 0) {\n this.bottom();\n } else if (top + DomHandler.getOuterHeight(target) > viewport.height) {\n this.top();\n }\n } else {\n var left = myOffset.left() + DomHandler.getOuterWidth(target) / 2;\n element.style.left = left + DomHandler.getWindowScrollLeft() + 'px';\n\n if (left < 0) {\n this.left();\n } else if (left + DomHandler.getOuterWidth(element) > viewport.width) {\n this.right();\n }\n }\n }\n };\n alignWithAt[position.at.x]('x');\n alignWithAt[position.at.y]('y');\n\n if (this.isFunction(callback)) {\n callback(position);\n }\n }\n }, {\n key: \"findCollisionPosition\",\n value: function findCollisionPosition(position) {\n if (position) {\n var isAxisY = position === 'top' || position === 'bottom';\n var myXPosition = position === 'left' ? 'right' : 'left';\n var myYPosition = position === 'top' ? 'bottom' : 'top';\n\n if (isAxisY) {\n return {\n axis: 'y',\n my: \"center \".concat(myYPosition),\n at: \"center \".concat(position)\n };\n }\n\n return {\n axis: 'x',\n my: \"\".concat(myXPosition, \" center\"),\n at: \"\".concat(position, \" center\")\n };\n }\n }\n }, {\n key: \"getParents\",\n value: function getParents(element) {\n var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n }, {\n key: \"getScrollableParents\",\n value: function getScrollableParents(element) {\n var scrollableParents = [];\n\n if (element) {\n var parents = this.getParents(element);\n var overflowRegex = /(auto|scroll)/;\n\n var overflowCheck = function overflowCheck(node) {\n var styleDeclaration = node ? getComputedStyle(node) : null;\n return styleDeclaration && (overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY')));\n };\n\n var _iterator = _createForOfIteratorHelper$3(parents),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var parent = _step.value;\n var scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n\n if (scrollSelectors) {\n var selectors = scrollSelectors.split(',');\n\n var _iterator2 = _createForOfIteratorHelper$3(selectors),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var selector = _step2.value;\n var el = this.findSingle(parent, selector);\n\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return scrollableParents;\n }\n }, {\n key: \"getHiddenElementOuterHeight\",\n value: function getHiddenElementOuterHeight(element) {\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n\n return 0;\n }\n }, {\n key: \"getHiddenElementOuterWidth\",\n value: function getHiddenElementOuterWidth(element) {\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n\n return 0;\n }\n }, {\n key: \"getHiddenElementDimensions\",\n value: function getHiddenElementDimensions(element) {\n var dimensions = {};\n\n if (element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n }\n\n return dimensions;\n }\n }, {\n key: \"fadeIn\",\n value: function fadeIn(element, duration) {\n if (element) {\n element.style.opacity = 0;\n var last = +new Date();\n var opacity = 0;\n\n var tick = function tick() {\n opacity = +element.style.opacity + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n\n if (+opacity < 1) {\n window.requestAnimationFrame && requestAnimationFrame(tick) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n }\n }, {\n key: \"fadeOut\",\n value: function fadeOut(element, duration) {\n if (element) {\n var opacity = 1,\n interval = 50,\n gap = interval / duration;\n var fading = setInterval(function () {\n opacity -= gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n }\n }, {\n key: \"getUserAgent\",\n value: function getUserAgent() {\n return navigator.userAgent;\n }\n }, {\n key: \"isIOS\",\n value: function isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n }, {\n key: \"isAndroid\",\n value: function isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n }, {\n key: \"isTouchDevice\",\n value: function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n }\n }, {\n key: \"isFunction\",\n value: function isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n }, {\n key: \"appendChild\",\n value: function appendChild(element, target) {\n if (this.isElement(target)) target.appendChild(element);else if (target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);else throw new Error('Cannot append ' + target + ' to ' + element);\n }\n }, {\n key: \"removeChild\",\n value: function removeChild(element, target) {\n if (this.isElement(target)) target.removeChild(element);else if (target.el && target.el.nativeElement) target.el.nativeElement.removeChild(element);else throw new Error('Cannot remove ' + element + ' from ' + target);\n }\n }, {\n key: \"isElement\",\n value: function isElement(obj) {\n return (typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement)) === \"object\" ? obj instanceof HTMLElement : obj && _typeof(obj) === \"object\" && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === \"string\";\n }\n }, {\n key: \"scrollInView\",\n value: function scrollInView(container, item) {\n var borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');\n var borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n var paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');\n var paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n var containerRect = container.getBoundingClientRect();\n var itemRect = item.getBoundingClientRect();\n var offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n var scroll = container.scrollTop;\n var elementHeight = container.clientHeight;\n var itemHeight = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {//ignore IE bug\n }\n }\n }\n }, {\n key: \"calculateScrollbarWidth\",\n value: function calculateScrollbarWidth(el) {\n if (el) {\n var style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n } else {\n if (this.calculatedScrollbarWidth != null) return this.calculatedScrollbarWidth;\n var scrollDiv = document.createElement(\"div\");\n scrollDiv.className = \"p-scrollbar-measure\";\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }\n }, {\n key: \"getBrowser\",\n value: function getBrowser() {\n if (!this.browser) {\n var matched = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n }, {\n key: \"resolveUserAgent\",\n value: function resolveUserAgent() {\n var ua = navigator.userAgent.toLowerCase();\n var match = /(chrome)[ ]([\\w.]+)/.exec(ua) || /(webkit)[ ]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ ]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) || [];\n return {\n browser: match[1] || \"\",\n version: match[2] || \"0\"\n };\n }\n }, {\n key: \"isVisible\",\n value: function isVisible(element) {\n return element && element.offsetParent != null;\n }\n }, {\n key: \"isExist\",\n value: function isExist(element) {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n }, {\n key: \"hasDOM\",\n value: function hasDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n }\n }, {\n key: \"getFocusableElements\",\n value: function getFocusableElements(element) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var focusableElements = DomHandler.find(element, \"button:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\".concat(selector, \",\\n [href][clientHeight][clientWidth]:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n input:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n select:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n textarea:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n [tabIndex]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector, \",\\n [contenteditable]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\").concat(selector));\n var visibleFocusableElements = [];\n\n var _iterator3 = _createForOfIteratorHelper$3(focusableElements),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var focusableElement = _step3.value;\n if (getComputedStyle(focusableElement).display !== \"none\" && getComputedStyle(focusableElement).visibility !== \"hidden\") visibleFocusableElements.push(focusableElement);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return visibleFocusableElements;\n }\n }, {\n key: \"getFirstFocusableElement\",\n value: function getFirstFocusableElement(element, selector) {\n var focusableElements = DomHandler.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[0] : null;\n }\n }, {\n key: \"getLastFocusableElement\",\n value: function getLastFocusableElement(element, selector) {\n var focusableElements = DomHandler.getFocusableElements(element, selector);\n return focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;\n }\n }, {\n key: \"getCursorOffset\",\n value: function getCursorOffset(el, prevText, nextText, currentText) {\n if (el) {\n var style = getComputedStyle(el);\n var ghostDiv = document.createElement('div');\n ghostDiv.style.position = 'absolute';\n ghostDiv.style.top = '0px';\n ghostDiv.style.left = '0px';\n ghostDiv.style.visibility = 'hidden';\n ghostDiv.style.pointerEvents = 'none';\n ghostDiv.style.overflow = style.overflow;\n ghostDiv.style.width = style.width;\n ghostDiv.style.height = style.height;\n ghostDiv.style.padding = style.padding;\n ghostDiv.style.border = style.border;\n ghostDiv.style.overflowWrap = style.overflowWrap;\n ghostDiv.style.whiteSpace = style.whiteSpace;\n ghostDiv.style.lineHeight = style.lineHeight;\n ghostDiv.innerHTML = prevText.replace(/\\r\\n|\\r|\\n/g, '<br />');\n var ghostSpan = document.createElement('span');\n ghostSpan.textContent = currentText;\n ghostDiv.appendChild(ghostSpan);\n var text = document.createTextNode(nextText);\n ghostDiv.appendChild(text);\n document.body.appendChild(ghostDiv);\n var offsetLeft = ghostSpan.offsetLeft,\n offsetTop = ghostSpan.offsetTop,\n clientHeight = ghostSpan.clientHeight;\n document.body.removeChild(ghostDiv);\n return {\n left: Math.abs(offsetLeft - el.scrollLeft),\n top: Math.abs(offsetTop - el.scrollTop) + clientHeight\n };\n }\n\n return {\n top: 'auto',\n left: 'auto'\n };\n }\n }, {\n key: \"invokeElementMethod\",\n value: function invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n }, {\n key: \"isClickable\",\n value: function isClickable(element) {\n var targetNode = element.nodeName;\n var parentNode = element.parentElement && element.parentElement.nodeName;\n return targetNode === 'INPUT' || targetNode === 'TEXTAREA' || targetNode === 'BUTTON' || targetNode === 'A' || parentNode === 'INPUT' || parentNode === 'TEXTAREA' || parentNode === 'BUTTON' || parentNode === 'A' || this.hasClass(element, 'p-button') || this.hasClass(element.parentElement, 'p-button') || this.hasClass(element.parentElement, 'p-checkbox') || this.hasClass(element.parentElement, 'p-radiobutton');\n }\n }, {\n key: \"applyStyle\",\n value: function applyStyle(element, style) {\n if (typeof style === 'string') {\n element.style.cssText = this.style;\n } else {\n for (var prop in this.style) {\n element.style[prop] = style[prop];\n }\n }\n }\n }, {\n key: \"exportCSV\",\n value: function exportCSV(csv, filename) {\n var blob = new Blob([csv], {\n type: 'application/csv;charset=utf-8;'\n });\n\n if (window.navigator.msSaveOrOpenBlob) {\n navigator.msSaveOrOpenBlob(blob, filename + '.csv');\n } else {\n var isDownloaded = DomHandler.saveAs({\n name: filename + '.csv',\n src: URL.createObjectURL(blob)\n });\n\n if (!isDownloaded) {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n }\n }\n }, {\n key: \"saveAs\",\n value: function saveAs(file) {\n if (file) {\n var link = document.createElement('a');\n\n if (link.download !== undefined) {\n var name = file.name,\n src = file.src;\n link.setAttribute('href', src);\n link.setAttribute('download', name);\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: \"createInlineStyle\",\n value: function createInlineStyle(nonce) {\n var styleElement = document.createElement('style');\n\n try {\n if (!nonce) {\n nonce = process.env.REACT_APP_CSS_NONCE;\n }\n } catch (error) {// NOOP\n }\n\n nonce && styleElement.setAttribute('nonce', nonce);\n document.head.appendChild(styleElement);\n return styleElement;\n }\n }, {\n key: \"removeInlineStyle\",\n value: function removeInlineStyle(styleElement) {\n if (this.isExist(styleElement)) {\n try {\n document.head.removeChild(styleElement);\n } catch (error) {// style element may have already been removed in a fast refresh\n }\n\n styleElement = null;\n }\n\n return styleElement;\n }\n }]);\n\n return DomHandler;\n}();\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$5() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTableBodyCell = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableBodyCell, _Component);\n\n var _super = _createSuper$5(TreeTableBodyCell);\n\n function TreeTableBodyCell(props) {\n var _this;\n\n _classCallCheck(this, TreeTableBodyCell);\n\n _this = _super.call(this, props);\n\n if (_this.props.editor) {\n _this.state = {};\n }\n\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n _this.onEditorFocus = _this.onEditorFocus.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableBodyCell, [{\n key: \"onClick\",\n value: function onClick() {\n var _this2 = this;\n\n if (this.props.editor && !this.state.editing && (this.props.selectOnEdit || !this.props.selectOnEdit && this.props.selected)) {\n this.selfClick = true;\n this.setState({\n editing: true\n }, function () {\n _this2.bindDocumentEditListener();\n\n _this2.overlayEventListener = function (e) {\n if (!_this2.isOutsideClicked(e.target)) {\n _this2.selfClick = true;\n }\n };\n\n OverlayService.on('overlay-click', _this2.overlayEventListener);\n });\n }\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n if (event.which === 13 || event.which === 9) {\n this.switchCellToViewMode(event);\n }\n }\n }, {\n key: \"bindDocumentEditListener\",\n value: function bindDocumentEditListener() {\n var _this3 = this;\n\n if (!this.documentEditListener) {\n this.documentEditListener = function (e) {\n if (!_this3.selfClick && _this3.isOutsideClicked(e.target)) {\n _this3.switchCellToViewMode(e);\n }\n\n _this3.selfClick = false;\n };\n\n document.addEventListener('click', this.documentEditListener);\n }\n }\n }, {\n key: \"isOutsideClicked\",\n value: function isOutsideClicked(target) {\n return this.container && !(this.container.isSameNode(target) || this.container.contains(target));\n }\n }, {\n key: \"unbindDocumentEditListener\",\n value: function unbindDocumentEditListener() {\n if (this.documentEditListener) {\n document.removeEventListener('click', this.documentEditListener);\n this.documentEditListener = null;\n this.selfClick = false;\n }\n }\n }, {\n key: \"closeCell\",\n value: function closeCell() {\n var _this4 = this;\n\n /* When using the 'tab' key, the focus event of the next cell is not called in IE. */\n setTimeout(function () {\n _this4.setState({\n editing: false\n }, function () {\n _this4.unbindDocumentEditListener();\n\n OverlayService.off('overlay-click', _this4.overlayEventListener);\n _this4.overlayEventListener = null;\n });\n }, 1);\n }\n }, {\n key: \"onEditorFocus\",\n value: function onEditorFocus(event) {\n this.onClick(event);\n }\n }, {\n key: \"switchCellToViewMode\",\n value: function switchCellToViewMode(event) {\n if (this.props.cellEditValidator) {\n var valid = this.props.cellEditValidator({\n originalEvent: event,\n columnProps: this.props\n });\n\n if (valid) {\n this.closeCell();\n }\n } else {\n this.closeCell();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this5 = this;\n\n if (this.container && this.props.editor) {\n clearTimeout(this.tabindexTimeout);\n\n if (this.state && this.state.editing) {\n var focusable = DomHandler$1.findSingle(this.container, 'input');\n\n if (focusable && document.activeElement !== focusable && !focusable.hasAttribute('data-isCellEditing')) {\n focusable.setAttribute('data-isCellEditing', true);\n focusable.focus();\n }\n\n this.keyHelper.tabIndex = -1;\n } else {\n this.tabindexTimeout = setTimeout(function () {\n if (_this5.keyHelper) {\n _this5.keyHelper.setAttribute('tabindex', 0);\n }\n }, 50);\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.unbindDocumentEditListener();\n\n if (this.overlayEventListener) {\n OverlayService.off('overlay-click', this.overlayEventListener);\n this.overlayEventListener = null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n var className = classNames(this.props.bodyClassName || this.props.className, {\n 'p-editable-column': this.props.editor,\n 'p-cell-editing': this.props.editor ? this.state.editing : false\n });\n var style = this.props.bodyStyle || this.props.style;\n var content;\n\n if (this.state && this.state.editing) {\n if (this.props.editor) content = ObjectUtils.getJSXElement(this.props.editor, {\n node: this.props.node,\n rowData: this.props.node.data,\n value: ObjectUtils.resolveFieldData(this.props.node.data, this.props.field),\n field: this.props.field,\n rowIndex: this.props.rowIndex,\n props: this.props\n });else throw new Error(\"Editor is not found on column.\");\n } else {\n if (this.props.body) content = ObjectUtils.getJSXElement(this.props.body, this.props.node, {\n field: this.props.field,\n rowIndex: this.props.rowIndex,\n props: this.props\n });else content = ObjectUtils.resolveFieldData(this.props.node.data, this.props.field);\n }\n /* eslint-disable */\n\n\n var editorKeyHelper = this.props.editor && /*#__PURE__*/React.createElement(\"a\", {\n tabIndex: 0,\n ref: function ref(el) {\n _this6.keyHelper = el;\n },\n className: \"p-cell-editor-key-helper p-hidden-accessible\",\n onFocus: this.onEditorFocus\n }, /*#__PURE__*/React.createElement(\"span\", null));\n /* eslint-enable */\n\n return /*#__PURE__*/React.createElement(\"td\", {\n ref: function ref(el) {\n return _this6.container = el;\n },\n className: className,\n style: style,\n onClick: this.onClick,\n onKeyDown: this.onKeyDown\n }, this.props.children, editorKeyHelper, content);\n }\n }]);\n\n return TreeTableBodyCell;\n}(Component);\n\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }\n\nfunction _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$4() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTableRow = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableRow, _Component);\n\n var _super = _createSuper$4(TreeTableRow);\n\n function TreeTableRow(props) {\n var _this;\n\n _classCallCheck(this, TreeTableRow);\n\n _this = _super.call(this, props);\n _this.onTogglerClick = _this.onTogglerClick.bind(_assertThisInitialized(_this));\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.onTouchEnd = _this.onTouchEnd.bind(_assertThisInitialized(_this));\n _this.propagateUp = _this.propagateUp.bind(_assertThisInitialized(_this));\n _this.onCheckboxChange = _this.onCheckboxChange.bind(_assertThisInitialized(_this));\n _this.onCheckboxFocus = _this.onCheckboxFocus.bind(_assertThisInitialized(_this));\n _this.onCheckboxBlur = _this.onCheckboxBlur.bind(_assertThisInitialized(_this));\n _this.onRightClick = _this.onRightClick.bind(_assertThisInitialized(_this));\n _this.onKeyDown = _this.onKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableRow, [{\n key: \"isLeaf\",\n value: function isLeaf() {\n return this.props.node.leaf === false ? false : !(this.props.node.children && this.props.node.children.length);\n }\n }, {\n key: \"onTogglerClick\",\n value: function onTogglerClick(event) {\n if (this.isExpanded()) this.collapse(event);else this.expand(event);\n event.preventDefault();\n event.stopPropagation();\n }\n }, {\n key: \"expand\",\n value: function expand(event) {\n var expandedKeys = this.props.expandedKeys ? _objectSpread$2({}, this.props.expandedKeys) : {};\n expandedKeys[this.props.node.key] = true;\n this.props.onToggle({\n originalEvent: event,\n value: expandedKeys\n });\n this.invokeToggleEvents(event, true);\n }\n }, {\n key: \"collapse\",\n value: function collapse(event) {\n var expandedKeys = _objectSpread$2({}, this.props.expandedKeys);\n\n delete expandedKeys[this.props.node.key];\n this.props.onToggle({\n originalEvent: event,\n value: expandedKeys\n });\n this.invokeToggleEvents(event, false);\n }\n }, {\n key: \"invokeToggleEvents\",\n value: function invokeToggleEvents(event, expanded) {\n if (expanded) {\n if (this.props.onExpand) {\n this.props.onExpand({\n originalEvent: event,\n node: this.props.node\n });\n }\n } else {\n if (this.props.onCollapse) {\n this.props.onCollapse({\n originalEvent: event,\n node: this.props.node\n });\n }\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick(event) {\n if (this.props.onRowClick) {\n this.props.onRowClick(event, this.props.node);\n }\n\n this.nodeTouched = false;\n }\n }, {\n key: \"onTouchEnd\",\n value: function onTouchEnd() {\n this.nodeTouched = true;\n }\n }, {\n key: \"onCheckboxChange\",\n value: function onCheckboxChange(event) {\n var checked = this.isChecked();\n var selectionKeys = this.props.selectionKeys ? _objectSpread$2({}, this.props.selectionKeys) : {};\n\n if (checked) {\n if (this.props.propagateSelectionDown) this.propagateDown(this.props.node, false, selectionKeys);else delete selectionKeys[this.props.node.key];\n\n if (this.props.propagateSelectionUp && this.props.onPropagateUp) {\n this.props.onPropagateUp({\n originalEvent: event,\n check: false,\n selectionKeys: selectionKeys\n });\n }\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: this.props.node\n });\n }\n } else {\n if (this.props.propagateSelectionDown) this.propagateDown(this.props.node, true, selectionKeys);else selectionKeys[this.props.node.key] = {\n checked: true\n };\n\n if (this.props.propagateSelectionUp && this.props.onPropagateUp) {\n this.props.onPropagateUp({\n originalEvent: event,\n check: true,\n selectionKeys: selectionKeys\n });\n }\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: this.props.node\n });\n }\n }\n\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange({\n originalEvent: event,\n value: selectionKeys\n });\n }\n\n DomHandler$1.clearSelection();\n }\n }, {\n key: \"onCheckboxFocus\",\n value: function onCheckboxFocus() {\n DomHandler$1.addClass(this.checkboxBox, 'p-focus');\n DomHandler$1.addClass(this.checkboxRef, 'p-checkbox-focused');\n }\n }, {\n key: \"onCheckboxBlur\",\n value: function onCheckboxBlur() {\n DomHandler$1.removeClass(this.checkboxBox, 'p-focus');\n DomHandler$1.removeClass(this.checkboxRef, 'p-checkbox-focused');\n }\n }, {\n key: \"propagateUp\",\n value: function propagateUp(event) {\n var check = event.check;\n var selectionKeys = event.selectionKeys;\n var checkedChildCount = 0;\n var childPartialSelected = false;\n\n var _iterator = _createForOfIteratorHelper$2(this.props.node.children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n if (selectionKeys[child.key] && selectionKeys[child.key].checked) checkedChildCount++;else if (selectionKeys[child.key] && selectionKeys[child.key].partialChecked) childPartialSelected = true;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (check && checkedChildCount === this.props.node.children.length) {\n selectionKeys[this.props.node.key] = {\n checked: true,\n partialChecked: false\n };\n } else {\n if (!check) {\n delete selectionKeys[this.props.node.key];\n }\n\n if (childPartialSelected || checkedChildCount > 0 && checkedChildCount !== this.props.node.children.length) selectionKeys[this.props.node.key] = {\n checked: false,\n partialChecked: true\n };else selectionKeys[this.props.node.key] = {\n checked: false,\n partialChecked: false\n };\n }\n\n if (this.props.propagateSelectionUp && this.props.onPropagateUp) {\n this.props.onPropagateUp(event);\n }\n }\n }, {\n key: \"propagateDown\",\n value: function propagateDown(node, check, selectionKeys) {\n if (check) selectionKeys[node.key] = {\n checked: true,\n partialChecked: false\n };else delete selectionKeys[node.key];\n\n if (node.children && node.children.length) {\n for (var i = 0; i < node.children.length; i++) {\n this.propagateDown(node.children[i], check, selectionKeys);\n }\n }\n }\n }, {\n key: \"onRightClick\",\n value: function onRightClick(event) {\n DomHandler$1.clearSelection();\n\n if (this.props.onContextMenuSelectionChange) {\n this.props.onContextMenuSelectionChange({\n originalEvent: event,\n value: this.props.node.key\n });\n }\n\n if (this.props.onContextMenu) {\n this.props.onContextMenu({\n originalEvent: event,\n node: this.props.node\n });\n }\n }\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n if (event.target === this.container) {\n var rowElement = event.currentTarget;\n\n switch (event.which) {\n //down arrow\n case 40:\n var nextRow = rowElement.nextElementSibling;\n\n if (nextRow) {\n nextRow.focus();\n }\n\n event.preventDefault();\n break;\n //up arrow\n\n case 38:\n var previousRow = rowElement.previousElementSibling;\n\n if (previousRow) {\n previousRow.focus();\n }\n\n event.preventDefault();\n break;\n //right arrow\n\n case 39:\n if (!this.isExpanded()) {\n this.expand(event);\n }\n\n event.preventDefault();\n break;\n //left arrow\n\n case 37:\n if (this.isExpanded()) {\n this.collapse(event);\n }\n\n event.preventDefault();\n break;\n //enter\n\n case 13:\n this.onClick(event);\n event.preventDefault();\n break;\n }\n }\n }\n }, {\n key: \"isExpanded\",\n value: function isExpanded() {\n return this.props.expandedKeys ? this.props.expandedKeys[this.props.node.key] !== undefined : false;\n }\n }, {\n key: \"isSelected\",\n value: function isSelected() {\n if ((this.props.selectionMode === 'single' || this.props.selectionMode === 'multiple') && this.props.selectionKeys) return this.props.selectionMode === 'single' ? this.props.selectionKeys === this.props.node.key : this.props.selectionKeys[this.props.node.key] !== undefined;else return false;\n }\n }, {\n key: \"isChecked\",\n value: function isChecked() {\n return this.props.selectionKeys ? this.props.selectionKeys[this.props.node.key] && this.props.selectionKeys[this.props.node.key].checked : false;\n }\n }, {\n key: \"isPartialChecked\",\n value: function isPartialChecked() {\n return this.props.selectionKeys ? this.props.selectionKeys[this.props.node.key] && this.props.selectionKeys[this.props.node.key].partialChecked : false;\n }\n }, {\n key: \"renderToggler\",\n value: function renderToggler() {\n var expanded = this.isExpanded();\n var iconClassName = classNames('\"p-treetable-toggler-icon pi pi-fw', {\n 'pi-chevron-right': !expanded,\n 'pi-chevron-down': expanded\n });\n var style = {\n marginLeft: this.props.level * 16 + 'px',\n visibility: this.props.node.leaf === false || this.props.node.children && this.props.node.children.length ? 'visible' : 'hidden'\n };\n return /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"p-treetable-toggler p-link p-unselectable-text\",\n onClick: this.onTogglerClick,\n tabIndex: -1,\n style: style\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: iconClassName\n }), /*#__PURE__*/React.createElement(Ripple, null));\n }\n }, {\n key: \"renderCheckbox\",\n value: function renderCheckbox() {\n var _this2 = this;\n\n if (this.props.selectionMode === 'checkbox' && this.props.node.selectable !== false) {\n var checked = this.isChecked();\n var partialChecked = this.isPartialChecked();\n var className = classNames('p-checkbox-box', {\n 'p-highlight': checked,\n 'p-indeterminate': partialChecked\n });\n var icon = classNames('p-checkbox-icon p-c', {\n 'pi pi-check': checked,\n 'pi pi-minus': partialChecked\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-checkbox p-treetable-checkbox p-component\",\n ref: function ref(el) {\n return _this2.checkboxRef = el;\n },\n onClick: this.onCheckboxChange,\n role: \"checkbox\",\n \"aria-checked\": checked\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-hidden-accessible\"\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"checkbox\",\n onFocus: this.onCheckboxFocus,\n onBlur: this.onCheckboxBlur\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n ref: function ref(el) {\n return _this2.checkboxBox = el;\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: icon\n })));\n } else {\n return null;\n }\n }\n }, {\n key: \"renderCell\",\n value: function renderCell(column) {\n var toggler, checkbox;\n\n if (column.props.expander) {\n toggler = this.renderToggler();\n checkbox = this.renderCheckbox();\n }\n\n return /*#__PURE__*/React.createElement(TreeTableBodyCell, _extends({\n key: column.props.columnKey || column.props.field\n }, column.props, {\n selectOnEdit: this.props.selectOnEdit,\n selected: this.isSelected(),\n node: this.props.node,\n rowIndex: this.props.rowIndex\n }), toggler, checkbox);\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this3 = this;\n\n if (this.isExpanded() && this.props.node.children) {\n return this.props.node.children.map(function (childNode, index) {\n return /*#__PURE__*/React.createElement(TreeTableRow, {\n key: childNode.key || JSON.stringify(childNode.data),\n level: _this3.props.level + 1,\n rowIndex: _this3.props.rowIndex + '_' + index,\n node: childNode,\n columns: _this3.props.columns,\n expandedKeys: _this3.props.expandedKeys,\n selectOnEdit: _this3.props.selectOnEdit,\n onToggle: _this3.props.onToggle,\n onExpand: _this3.props.onExpand,\n onCollapse: _this3.props.onCollapse,\n selectionMode: _this3.props.selectionMode,\n selectionKeys: _this3.props.selectionKeys,\n onSelectionChange: _this3.props.onSelectionChange,\n metaKeySelection: _this3.props.metaKeySelection,\n onRowClick: _this3.props.onRowClick,\n onSelect: _this3.props.onSelect,\n onUnselect: _this3.props.onUnselect,\n propagateSelectionUp: _this3.props.propagateSelectionUp,\n propagateSelectionDown: _this3.props.propagateSelectionDown,\n onPropagateUp: _this3.propagateUp,\n rowClassName: _this3.props.rowClassName,\n contextMenuSelectionKey: _this3.props.contextMenuSelectionKey,\n onContextMenuSelectionChange: _this3.props.onContextMenuSelectionChange,\n onContextMenu: _this3.props.onContextMenu\n });\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var cells = this.props.columns.map(function (col) {\n return _this4.renderCell(col);\n });\n var children = this.renderChildren();\n var className = {\n 'p-highlight': this.isSelected(),\n 'p-highlight-contextmenu': this.props.contextMenuSelectionKey && this.props.contextMenuSelectionKey === this.props.node.key\n };\n\n if (this.props.rowClassName) {\n var rowClassName = this.props.rowClassName(this.props.node);\n className = _objectSpread$2(_objectSpread$2({}, className), rowClassName);\n }\n\n className = classNames(className, this.props.node.className);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"tr\", {\n ref: function ref(el) {\n return _this4.container = el;\n },\n tabIndex: 0,\n className: className,\n style: this.props.node.style,\n onClick: this.onClick,\n onTouchEnd: this.onTouchEnd,\n onContextMenu: this.onRightClick,\n onKeyDown: this.onKeyDown\n }, cells), children);\n }\n }]);\n\n return TreeTableRow;\n}(Component);\n\n_defineProperty(TreeTableRow, \"defaultProps\", {\n node: null,\n level: null,\n columns: null,\n expandedKeys: null,\n contextMenuSelectionKey: null,\n selectionMode: null,\n selectionKeys: null,\n metaKeySelection: true,\n propagateSelectionUp: true,\n propagateSelectionDown: true,\n rowClassName: null,\n onExpand: null,\n onCollapse: null,\n onToggle: null,\n onRowClick: null,\n onSelect: null,\n onUnselect: null,\n onSelectionChange: null,\n onPropagateUp: null,\n onContextMenuSelectionChange: null,\n onContextMenu: null\n});\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\n\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTableBody = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableBody, _Component);\n\n var _super = _createSuper$3(TreeTableBody);\n\n function TreeTableBody(props) {\n var _this;\n\n _classCallCheck(this, TreeTableBody);\n\n _this = _super.call(this, props);\n _this.onRowClick = _this.onRowClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableBody, [{\n key: \"createRow\",\n value: function createRow(node, index) {\n return /*#__PURE__*/React.createElement(TreeTableRow, {\n key: node.key || JSON.stringify(node.data),\n level: 0,\n rowIndex: index,\n selectOnEdit: this.props.selectOnEdit,\n node: node,\n columns: this.props.columns,\n expandedKeys: this.props.expandedKeys,\n onToggle: this.props.onToggle,\n onExpand: this.props.onExpand,\n onCollapse: this.props.onCollapse,\n selectionMode: this.props.selectionMode,\n selectionKeys: this.props.selectionKeys,\n onSelectionChange: this.props.onSelectionChange,\n metaKeySelection: this.props.metaKeySelection,\n onRowClick: this.onRowClick,\n onSelect: this.props.onSelect,\n onUnselect: this.props.onUnselect,\n propagateSelectionUp: this.props.propagateSelectionUp,\n propagateSelectionDown: this.props.propagateSelectionDown,\n rowClassName: this.props.rowClassName,\n contextMenuSelectionKey: this.props.contextMenuSelectionKey,\n onContextMenuSelectionChange: this.props.onContextMenuSelectionChange,\n onContextMenu: this.props.onContextMenu\n });\n }\n }, {\n key: \"flattenizeTree\",\n value: function flattenizeTree(nodes) {\n var rows = [];\n nodes = nodes || this.props.value;\n\n var _iterator = _createForOfIteratorHelper$1(nodes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n rows.push(node.key);\n\n if (this.isExpandedKey(node.key)) {\n rows = rows.concat(this.flattenizeTree(node.children));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return rows;\n }\n }, {\n key: \"isExpandedKey\",\n value: function isExpandedKey(key) {\n return this.props.expandedKeys && !!this.props.expandedKeys[key];\n }\n }, {\n key: \"onRowClick\",\n value: function onRowClick(event, node) {\n var _this2 = this;\n\n if (this.props.onRowClick) {\n this.props.onRowClick({\n originalEvent: event,\n node: node\n });\n }\n\n var targetNode = event.target.nodeName;\n\n if (targetNode === 'INPUT' || targetNode === 'BUTTON' || targetNode === 'A' || DomHandler.hasClass(event.target, 'p-clickable') || DomHandler.hasClass(event.target, 'p-treetable-toggler') || DomHandler.hasClass(event.target.parentElement, 'p-treetable-toggler')) {\n return;\n }\n\n if ((this.isSingleSelectionMode() || this.isMultipleSelectionMode()) && node.selectable !== false) {\n var selectionKeys;\n var selected = this.isSelected(node);\n var metaSelection = this.nodeTouched ? false : this.props.metaKeySelection;\n var flatKeys = this.flattenizeTree();\n var rowIndex = flatKeys.findIndex(function (key) {\n return key === node.key;\n });\n\n if (this.isMultipleSelectionMode() && event.shiftKey) {\n DomHandler.clearSelection(); // find first selected row\n\n var anchorRowIndex = flatKeys.findIndex(function (key) {\n return _this2.props.selectionKeys[key];\n });\n var rangeStart = Math.min(rowIndex, anchorRowIndex);\n var rangeEnd = Math.max(rowIndex, anchorRowIndex);\n selectionKeys = _objectSpread$1({}, this.props.selectionKeys);\n\n for (var i = rangeStart; i <= rangeEnd; i++) {\n var rowKey = flatKeys[i];\n selectionKeys[rowKey] = true;\n }\n } else {\n this.anchorRowIndex = rowIndex;\n\n if (metaSelection) {\n var metaKey = event.metaKey || event.ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n selectionKeys = null;\n } else {\n selectionKeys = _objectSpread$1({}, this.props.selectionKeys);\n delete selectionKeys[node.key];\n }\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: node\n });\n }\n } else {\n if (this.isSingleSelectionMode()) {\n selectionKeys = node.key;\n } else if (this.isMultipleSelectionMode()) {\n selectionKeys = !metaKey ? {} : this.props.selectionKeys ? _objectSpread$1({}, this.props.selectionKeys) : {};\n selectionKeys[node.key] = true;\n }\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: node\n });\n }\n }\n } else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n selectionKeys = null;\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: node\n });\n }\n } else {\n selectionKeys = node.key;\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: node\n });\n }\n }\n } else {\n if (selected) {\n selectionKeys = _objectSpread$1({}, this.props.selectionKeys);\n delete selectionKeys[node.key];\n\n if (this.props.onUnselect) {\n this.props.onUnselect({\n originalEvent: event,\n node: node\n });\n }\n } else {\n selectionKeys = this.props.selectionKeys ? _objectSpread$1({}, this.props.selectionKeys) : {};\n selectionKeys[node.key] = true;\n\n if (this.props.onSelect) {\n this.props.onSelect({\n originalEvent: event,\n node: node\n });\n }\n }\n }\n }\n }\n\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange({\n originalEvent: event,\n value: selectionKeys\n });\n }\n }\n }\n }, {\n key: \"isSingleSelectionMode\",\n value: function isSingleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'single';\n }\n }, {\n key: \"isMultipleSelectionMode\",\n value: function isMultipleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'multiple';\n }\n }, {\n key: \"isSelected\",\n value: function isSelected(node) {\n if ((this.props.selectionMode === 'single' || this.props.selectionMode === 'multiple') && this.props.selectionKeys) return this.props.selectionMode === 'single' ? this.props.selectionKeys === node.key : this.props.selectionKeys[node.key] !== undefined;else return false;\n }\n }, {\n key: \"renderRows\",\n value: function renderRows() {\n var _this3 = this;\n\n if (this.props.paginator && !this.props.lazy) {\n var rpp = this.props.rows || 0;\n var startIndex = this.props.first || 0;\n var endIndex = startIndex + rpp;\n var rows = [];\n\n for (var i = startIndex; i < endIndex; i++) {\n var rowData = this.props.value[i];\n if (rowData) rows.push(this.createRow(this.props.value[i]));else break;\n }\n\n return rows;\n } else {\n return this.props.value.map(function (node, index) {\n return _this3.createRow(node, index);\n });\n }\n }\n }, {\n key: \"renderEmptyMessage\",\n value: function renderEmptyMessage() {\n if (this.props.loading) {\n return null;\n } else {\n var colSpan = this.props.columns ? this.props.columns.length : null;\n var content = this.props.emptyMessage || localeOption('emptyMessage');\n return /*#__PURE__*/React.createElement(\"tr\", null, /*#__PURE__*/React.createElement(\"td\", {\n className: \"p-treetable-emptymessage\",\n colSpan: colSpan\n }, content));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var content = this.props.value && this.props.value.length ? this.renderRows() : this.renderEmptyMessage();\n return /*#__PURE__*/React.createElement(\"tbody\", {\n className: \"p-treetable-tbody\"\n }, content);\n }\n }]);\n\n return TreeTableBody;\n}(Component);\n\n_defineProperty(TreeTableBody, \"defaultProps\", {\n value: null,\n columns: null,\n expandedKeys: null,\n contextMenuSelectionKey: null,\n paginator: false,\n first: null,\n rows: null,\n selectionMode: null,\n selectionKeys: null,\n metaKeySelection: true,\n propagateSelectionUp: true,\n propagateSelectionDown: true,\n lazy: false,\n rowClassName: null,\n emptyMessage: null,\n loading: false,\n onExpand: null,\n onCollapse: null,\n onToggle: null,\n onRowClick: null,\n onSelect: null,\n onUnselect: null,\n onSelectionChange: null,\n onContextMenuSelectionChange: null,\n onContextMenu: null\n});\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTableFooter = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableFooter, _Component);\n\n var _super = _createSuper$2(TreeTableFooter);\n\n function TreeTableFooter() {\n _classCallCheck(this, TreeTableFooter);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(TreeTableFooter, [{\n key: \"renderFooterCell\",\n value: function renderFooterCell(column, index) {\n return /*#__PURE__*/React.createElement(\"td\", {\n key: column.field || index,\n className: column.props.footerClassName || column.props.className,\n style: column.props.footerStyle || column.props.style,\n rowSpan: column.props.rowSpan,\n colSpan: column.props.colSpan\n }, column.props.footer);\n }\n }, {\n key: \"renderFooterRow\",\n value: function renderFooterRow(row, index) {\n var _this = this;\n\n var rowColumns = React.Children.toArray(row.props.children);\n var rowFooterCells = rowColumns.map(function (col, index) {\n return _this.renderFooterCell(col, index);\n });\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: index\n }, rowFooterCells);\n }\n }, {\n key: \"renderColumnGroup\",\n value: function renderColumnGroup() {\n var _this2 = this;\n\n var rows = React.Children.toArray(this.props.columnGroup.props.children);\n return rows.map(function (row, i) {\n return _this2.renderFooterRow(row, i);\n });\n }\n }, {\n key: \"renderColumns\",\n value: function renderColumns(columns) {\n var _this3 = this;\n\n if (columns) {\n var headerCells = columns.map(function (col, index) {\n return _this3.renderFooterCell(col, index);\n });\n return /*#__PURE__*/React.createElement(\"tr\", null, headerCells);\n } else {\n return null;\n }\n }\n }, {\n key: \"hasFooter\",\n value: function hasFooter() {\n if (this.props.columnGroup) {\n return true;\n } else {\n for (var i = 0; i < this.props.columns.length; i++) {\n if (this.props.columns[i].props.footer) {\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var content = this.props.columnGroup ? this.renderColumnGroup() : this.renderColumns(this.props.columns);\n\n if (this.hasFooter()) {\n return /*#__PURE__*/React.createElement(\"tfoot\", {\n className: \"p-treetable-tfoot\"\n }, content);\n } else {\n return null;\n }\n }\n }]);\n\n return TreeTableFooter;\n}(Component);\n\n_defineProperty(TreeTableFooter, \"defaultProps\", {\n columns: null,\n columnGroup: null\n});\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTableScrollableView = /*#__PURE__*/function (_Component) {\n _inherits(TreeTableScrollableView, _Component);\n\n var _super = _createSuper$1(TreeTableScrollableView);\n\n function TreeTableScrollableView(props) {\n var _this;\n\n _classCallCheck(this, TreeTableScrollableView);\n\n _this = _super.call(this, props);\n _this.onHeaderScroll = _this.onHeaderScroll.bind(_assertThisInitialized(_this));\n _this.onBodyScroll = _this.onBodyScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTableScrollableView, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setScrollHeight();\n\n if (!this.props.frozen) {\n var scrollBarWidth = DomHandler$1.calculateScrollbarWidth();\n this.scrollHeaderBox.style.marginRight = scrollBarWidth + 'px';\n\n if (this.scrollFooterBox) {\n this.scrollFooterBox.style.marginRight = scrollBarWidth + 'px';\n }\n } else {\n this.scrollBody.style.paddingBottom = DomHandler$1.calculateScrollbarWidth() + 'px';\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.setScrollHeight();\n }\n }, {\n key: \"setScrollHeight\",\n value: function setScrollHeight() {\n if (this.props.scrollHeight) {\n if (this.props.scrollHeight.indexOf('%') !== -1) {\n var datatableContainer = this.findDataTableContainer(this.container);\n this.scrollBody.style.visibility = 'hidden';\n this.scrollBody.style.height = '100px'; //temporary height to calculate static height\n\n var containerHeight = DomHandler$1.getOuterHeight(datatableContainer);\n var relativeHeight = DomHandler$1.getOuterHeight(datatableContainer.parentElement) * parseInt(this.props.scrollHeight, 10) / 100;\n var staticHeight = containerHeight - 100; //total height of headers, footers, paginators\n\n var scrollBodyHeight = relativeHeight - staticHeight;\n this.scrollBody.style.height = 'auto';\n this.scrollBody.style.maxHeight = scrollBodyHeight + 'px';\n this.scrollBody.style.visibility = 'visible';\n } else {\n this.scrollBody.style.maxHeight = this.props.scrollHeight;\n }\n }\n }\n }, {\n key: \"findDataTableContainer\",\n value: function findDataTableContainer(element) {\n if (element) {\n var el = element;\n\n while (el && !DomHandler$1.hasClass(el, 'p-treetable')) {\n el = el.parentElement;\n }\n\n return el;\n } else {\n return null;\n }\n }\n }, {\n key: \"onHeaderScroll\",\n value: function onHeaderScroll() {\n this.scrollHeader.scrollLeft = 0;\n }\n }, {\n key: \"onBodyScroll\",\n value: function onBodyScroll() {\n var frozenView = this.container.previousElementSibling;\n var frozenScrollBody;\n\n if (frozenView) {\n frozenScrollBody = DomHandler$1.findSingle(frozenView, '.p-treetable-scrollable-body');\n }\n\n this.scrollHeaderBox.style.marginLeft = -1 * this.scrollBody.scrollLeft + 'px';\n\n if (this.scrollFooterBox) {\n this.scrollFooterBox.style.marginLeft = -1 * this.scrollBody.scrollLeft + 'px';\n }\n\n if (frozenScrollBody) {\n frozenScrollBody.scrollTop = this.scrollBody.scrollTop;\n }\n }\n }, {\n key: \"calculateRowHeight\",\n value: function calculateRowHeight() {\n var row = DomHandler$1.findSingle(this.scrollTable, 'tr:not(.p-treetable-emptymessage-row)');\n\n if (row) {\n this.rowHeight = DomHandler$1.getOuterHeight(row);\n }\n }\n }, {\n key: \"renderColGroup\",\n value: function renderColGroup() {\n if (this.props.columns && this.props.columns.length) {\n return /*#__PURE__*/React.createElement(\"colgroup\", {\n className: \"p-treetable-scrollable-colgroup\"\n }, this.props.columns.map(function (col, i) {\n return /*#__PURE__*/React.createElement(\"col\", {\n key: col.field + '_' + i\n });\n }));\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classNames('p-treetable-scrollable-view', {\n 'p-treetable-frozen-view': this.props.frozen,\n 'p-treetable-unfrozen-view': !this.props.frozen && this.props.frozenWidth\n });\n var width = this.props.frozen ? this.props.frozenWidth : 'calc(100% - ' + this.props.frozenWidth + ')';\n var left = this.props.frozen ? null : this.props.frozenWidth;\n var colGroup = this.renderColGroup();\n var scrollableBodyStyle = !this.props.frozen && this.props.scrollHeight ? {\n overflowY: 'scroll'\n } : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: {\n width: width,\n left: left\n },\n ref: function ref(el) {\n _this2.container = el;\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-header\",\n ref: function ref(el) {\n _this2.scrollHeader = el;\n },\n onScroll: this.onHeaderScroll\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-header-box\",\n ref: function ref(el) {\n _this2.scrollHeaderBox = el;\n }\n }, /*#__PURE__*/React.createElement(\"table\", {\n className: \"p-treetable-scrollable-header-table\"\n }, colGroup, this.props.header))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-body\",\n ref: function ref(el) {\n _this2.scrollBody = el;\n },\n style: scrollableBodyStyle,\n onScroll: this.onBodyScroll\n }, /*#__PURE__*/React.createElement(\"table\", {\n ref: function ref(el) {\n _this2.scrollTable = el;\n },\n style: {\n top: '0'\n },\n className: \"p-treetable-scrollable-body-table\"\n }, colGroup, this.props.body)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-footer\",\n ref: function ref(el) {\n _this2.scrollFooter = el;\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-footer-box\",\n ref: function ref(el) {\n _this2.scrollFooterBox = el;\n }\n }, /*#__PURE__*/React.createElement(\"table\", {\n className: \"p-treetable-scrollable-footer-table\"\n }, colGroup, this.props.footer))));\n }\n }]);\n\n return TreeTableScrollableView;\n}(Component);\n\n_defineProperty(TreeTableScrollableView, \"defaultProps\", {\n header: null,\n body: null,\n footer: null,\n columns: null,\n frozen: null,\n frozenWidth: null,\n frozenBody: null\n});\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar TreeTable = /*#__PURE__*/function (_Component) {\n _inherits(TreeTable, _Component);\n\n var _super = _createSuper(TreeTable);\n\n function TreeTable(props) {\n var _this;\n\n _classCallCheck(this, TreeTable);\n\n _this = _super.call(this, props);\n var state = {};\n\n if (!_this.props.onToggle) {\n _this.state = {\n expandedKeys: _this.props.expandedKeys\n };\n }\n\n if (!_this.props.onPage) {\n state.first = props.first;\n state.rows = props.rows;\n }\n\n if (!_this.props.onSort) {\n state.sortField = props.sortField;\n state.sortOrder = props.sortOrder;\n state.multiSortMeta = props.multiSortMeta;\n }\n\n if (!_this.props.onFilter) {\n state.filters = props.filters;\n }\n\n if (Object.keys(state).length) {\n _this.state = state;\n }\n\n _this.onToggle = _this.onToggle.bind(_assertThisInitialized(_this));\n _this.onPageChange = _this.onPageChange.bind(_assertThisInitialized(_this));\n _this.onSort = _this.onSort.bind(_assertThisInitialized(_this));\n _this.onFilter = _this.onFilter.bind(_assertThisInitialized(_this));\n _this.onColumnResizeStart = _this.onColumnResizeStart.bind(_assertThisInitialized(_this));\n _this.onColumnDragStart = _this.onColumnDragStart.bind(_assertThisInitialized(_this));\n _this.onColumnDragOver = _this.onColumnDragOver.bind(_assertThisInitialized(_this));\n _this.onColumnDragLeave = _this.onColumnDragLeave.bind(_assertThisInitialized(_this));\n _this.onColumnDrop = _this.onColumnDrop.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(TreeTable, [{\n key: \"onToggle\",\n value: function onToggle(event) {\n if (this.props.onToggle) {\n this.props.onToggle(event);\n } else {\n this.setState({\n expandedKeys: event.value\n });\n }\n }\n }, {\n key: \"onPageChange\",\n value: function onPageChange(event) {\n if (this.props.onPage) this.props.onPage(event);else this.setState({\n first: event.first,\n rows: event.rows\n });\n }\n }, {\n key: \"onSort\",\n value: function onSort(event) {\n var sortField = event.sortField;\n var sortOrder = this.props.defaultSortOrder;\n var multiSortMeta;\n var eventMeta;\n this.columnSortable = event.sortable;\n this.columnSortFunction = event.sortFunction;\n this.columnField = event.sortField;\n\n if (this.props.sortMode === 'multiple') {\n var metaKey = event.originalEvent.metaKey || event.originalEvent.ctrlKey;\n multiSortMeta = this.getMultiSortMeta();\n\n if (multiSortMeta && multiSortMeta instanceof Array) {\n var sortMeta = multiSortMeta.find(function (sortMeta) {\n return sortMeta.field === sortField;\n });\n sortOrder = sortMeta ? this.getCalculatedSortOrder(sortMeta.order) : sortOrder;\n }\n\n var newMetaData = {\n field: sortField,\n order: sortOrder\n };\n\n if (sortOrder) {\n if (!multiSortMeta || !metaKey) {\n multiSortMeta = [];\n }\n\n this.addSortMeta(newMetaData, multiSortMeta);\n } else if (this.props.removableSort && multiSortMeta) {\n this.removeSortMeta(newMetaData, multiSortMeta);\n }\n\n eventMeta = {\n multiSortMeta: multiSortMeta\n };\n } else {\n sortOrder = this.getSortField() === sortField ? this.getCalculatedSortOrder(this.getSortOrder()) : sortOrder;\n\n if (this.props.removableSort) {\n sortField = sortOrder ? sortField : null;\n }\n\n eventMeta = {\n sortField: sortField,\n sortOrder: sortOrder\n };\n }\n\n if (this.props.onSort) {\n this.props.onSort(eventMeta);\n } else {\n eventMeta.first = 0;\n this.setState(eventMeta);\n }\n }\n }, {\n key: \"getCalculatedSortOrder\",\n value: function getCalculatedSortOrder(currentOrder) {\n return this.props.removableSort ? this.props.defaultSortOrder === currentOrder ? currentOrder * -1 : 0 : currentOrder * -1;\n }\n }, {\n key: \"addSortMeta\",\n value: function addSortMeta(meta, multiSortMeta) {\n var index = -1;\n\n for (var i = 0; i < multiSortMeta.length; i++) {\n if (multiSortMeta[i].field === meta.field) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) multiSortMeta[index] = meta;else multiSortMeta.push(meta);\n }\n }, {\n key: \"removeSortMeta\",\n value: function removeSortMeta(meta, multiSortMeta) {\n var index = -1;\n\n for (var i = 0; i < multiSortMeta.length; i++) {\n if (multiSortMeta[i].field === meta.field) {\n index = i;\n break;\n }\n }\n\n if (index >= 0) {\n multiSortMeta.splice(index, 1);\n }\n\n multiSortMeta = multiSortMeta.length > 0 ? multiSortMeta : null;\n }\n }, {\n key: \"sortSingle\",\n value: function sortSingle(data) {\n return this.sortNodes(data);\n }\n }, {\n key: \"sortNodes\",\n value: function sortNodes(data) {\n var _this2 = this;\n\n var value = _toConsumableArray(data);\n\n if (this.columnSortable && this.columnSortable === 'custom' && this.columnSortFunction) {\n value = this.columnSortFunction({\n field: this.getSortField(),\n order: this.getSortOrder()\n });\n } else {\n value.sort(function (node1, node2) {\n var sortField = _this2.getSortField();\n\n var value1 = ObjectUtils.resolveFieldData(node1.data, sortField);\n var value2 = ObjectUtils.resolveFieldData(node2.data, sortField);\n var result = null;\n if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {\n numeric: true\n });else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n return _this2.getSortOrder() * result;\n });\n\n for (var i = 0; i < value.length; i++) {\n if (value[i].children && value[i].children.length) {\n value[i].children = this.sortNodes(value[i].children);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"sortMultiple\",\n value: function sortMultiple(data) {\n var multiSortMeta = this.getMultiSortMeta();\n if (multiSortMeta) return this.sortMultipleNodes(data, multiSortMeta);else return data;\n }\n }, {\n key: \"sortMultipleNodes\",\n value: function sortMultipleNodes(data, multiSortMeta) {\n var _this3 = this;\n\n var value = _toConsumableArray(data);\n\n value.sort(function (node1, node2) {\n return _this3.multisortField(node1, node2, multiSortMeta, 0);\n });\n\n for (var i = 0; i < value.length; i++) {\n if (value[i].children && value[i].children.length) {\n value[i].children = this.sortMultipleNodes(value[i].children, multiSortMeta);\n }\n }\n\n return value;\n }\n }, {\n key: \"multisortField\",\n value: function multisortField(node1, node2, multiSortMeta, index) {\n var value1 = ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n var value2 = ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n var result = null;\n if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else {\n if (value1 === value2) {\n return multiSortMeta.length - 1 > index ? this.multisortField(node1, node2, multiSortMeta, index + 1) : 0;\n } else {\n if ((typeof value1 === 'string' || value1 instanceof String) && (typeof value2 === 'string' || value2 instanceof String)) return multiSortMeta[index].order * value1.localeCompare(value2, undefined, {\n numeric: true\n });else result = value1 < value2 ? -1 : 1;\n }\n }\n return multiSortMeta[index].order * result;\n }\n }, {\n key: \"filter\",\n value: function filter(value, field, mode) {\n this.onFilter({\n value: value,\n field: field,\n matchMode: mode\n });\n }\n }, {\n key: \"onFilter\",\n value: function onFilter(event) {\n var currentFilters = this.getFilters();\n var newFilters = currentFilters ? _objectSpread({}, currentFilters) : {};\n if (!this.isFilterBlank(event.value)) newFilters[event.field] = {\n value: event.value,\n matchMode: event.matchMode\n };else if (newFilters[event.field]) delete newFilters[event.field];\n\n if (this.props.onFilter) {\n this.props.onFilter({\n filters: newFilters\n });\n } else {\n this.setState({\n first: 0,\n filters: newFilters\n });\n }\n }\n }, {\n key: \"hasFilter\",\n value: function hasFilter() {\n var filters = this.getFilters();\n return filters && Object.keys(filters).length > 0;\n }\n }, {\n key: \"isFilterBlank\",\n value: function isFilterBlank(filter) {\n if (filter !== null && filter !== undefined) {\n if (typeof filter === 'string' && filter.trim().length === 0 || filter instanceof Array && filter.length === 0) return true;else return false;\n }\n\n return true;\n }\n }, {\n key: \"onColumnResizeStart\",\n value: function onColumnResizeStart(event) {\n var containerLeft = DomHandler$1.getOffset(this.container).left;\n this.resizeColumn = event.columnEl;\n this.resizeColumnProps = event.column;\n this.columnResizing = true;\n this.lastResizerHelperX = event.originalEvent.pageX - containerLeft + this.container.scrollLeft;\n this.bindColumnResizeEvents();\n }\n }, {\n key: \"onColumnResize\",\n value: function onColumnResize(event) {\n var containerLeft = DomHandler$1.getOffset(this.container).left;\n DomHandler$1.addClass(this.container, 'p-unselectable-text');\n this.resizerHelper.style.height = this.container.offsetHeight + 'px';\n this.resizerHelper.style.top = 0 + 'px';\n this.resizerHelper.style.left = event.pageX - containerLeft + this.container.scrollLeft + 'px';\n this.resizerHelper.style.display = 'block';\n }\n }, {\n key: \"onColumnResizeEnd\",\n value: function onColumnResizeEnd(event) {\n var delta = this.resizerHelper.offsetLeft - this.lastResizerHelperX;\n var columnWidth = this.resizeColumn.offsetWidth;\n var newColumnWidth = columnWidth + delta;\n var minWidth = this.resizeColumn.style.minWidth || 15;\n\n if (columnWidth + delta > parseInt(minWidth, 10)) {\n if (this.props.columnResizeMode === 'fit') {\n var nextColumn = this.resizeColumn.nextElementSibling;\n var nextColumnWidth = nextColumn.offsetWidth - delta;\n\n if (newColumnWidth > 15 && nextColumnWidth > 15) {\n if (this.props.scrollable) {\n var scrollableView = this.findParentScrollableView(this.resizeColumn);\n var scrollableBodyTable = DomHandler$1.findSingle(scrollableView, 'table.p-treetable-scrollable-body-table');\n var scrollableHeaderTable = DomHandler$1.findSingle(scrollableView, 'table.p-treetable-scrollable-header-table');\n var scrollableFooterTable = DomHandler$1.findSingle(scrollableView, 'table.p-treetable-scrollable-footer-table');\n var resizeColumnIndex = DomHandler$1.index(this.resizeColumn);\n this.resizeColGroup(scrollableHeaderTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableBodyTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n this.resizeColGroup(scrollableFooterTable, resizeColumnIndex, newColumnWidth, nextColumnWidth);\n } else {\n this.resizeColumn.style.width = newColumnWidth + 'px';\n\n if (nextColumn) {\n nextColumn.style.width = nextColumnWidth + 'px';\n }\n }\n }\n } else if (this.props.columnResizeMode === 'expand') {\n if (this.props.scrollable) {\n var _scrollableView = this.findParentScrollableView(this.resizeColumn);\n\n var _scrollableBodyTable = DomHandler$1.findSingle(_scrollableView, 'table.p-treetable-scrollable-body-table');\n\n var _scrollableHeaderTable = DomHandler$1.findSingle(_scrollableView, 'table.p-treetable-scrollable-header-table');\n\n var _scrollableFooterTable = DomHandler$1.findSingle(_scrollableView, 'table.p-treetable-scrollable-footer-table');\n\n _scrollableBodyTable.style.width = _scrollableBodyTable.offsetWidth + delta + 'px';\n _scrollableHeaderTable.style.width = _scrollableHeaderTable.offsetWidth + delta + 'px';\n\n if (_scrollableFooterTable) {\n _scrollableFooterTable.style.width = _scrollableHeaderTable.offsetWidth + delta + 'px';\n }\n\n var _resizeColumnIndex = DomHandler$1.index(this.resizeColumn);\n\n this.resizeColGroup(_scrollableHeaderTable, _resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(_scrollableBodyTable, _resizeColumnIndex, newColumnWidth, null);\n this.resizeColGroup(_scrollableFooterTable, _resizeColumnIndex, newColumnWidth, null);\n } else {\n this.table.style.width = this.table.offsetWidth + delta + 'px';\n this.resizeColumn.style.width = newColumnWidth + 'px';\n }\n }\n\n if (this.props.onColumnResizeEnd) {\n this.props.onColumnResizeEnd({\n element: this.resizeColumn,\n column: this.resizeColumnProps,\n delta: delta\n });\n }\n }\n\n this.resizerHelper.style.display = 'none';\n this.resizeColumn = null;\n this.resizeColumnProps = null;\n DomHandler$1.removeClass(this.container, 'p-unselectable-text');\n this.unbindColumnResizeEvents();\n }\n }, {\n key: \"findParentScrollableView\",\n value: function findParentScrollableView(column) {\n if (column) {\n var parent = column.parentElement;\n\n while (parent && !DomHandler$1.hasClass(parent, 'p-treetable-scrollable-view')) {\n parent = parent.parentElement;\n }\n\n return parent;\n } else {\n return null;\n }\n }\n }, {\n key: \"resizeColGroup\",\n value: function resizeColGroup(table, resizeColumnIndex, newColumnWidth, nextColumnWidth) {\n if (table) {\n var colGroup = table.children[0].nodeName === 'COLGROUP' ? table.children[0] : null;\n\n if (colGroup) {\n var col = colGroup.children[resizeColumnIndex];\n var nextCol = col.nextElementSibling;\n col.style.width = newColumnWidth + 'px';\n\n if (nextCol && nextColumnWidth) {\n nextCol.style.width = nextColumnWidth + 'px';\n }\n } else {\n throw new Error(\"Scrollable tables require a colgroup to support resizable columns\");\n }\n }\n }\n }, {\n key: \"bindColumnResizeEvents\",\n value: function bindColumnResizeEvents() {\n var _this4 = this;\n\n this.documentColumnResizeListener = document.addEventListener('mousemove', function (event) {\n if (_this4.columnResizing) {\n _this4.onColumnResize(event);\n }\n });\n this.documentColumnResizeEndListener = document.addEventListener('mouseup', function (event) {\n if (_this4.columnResizing) {\n _this4.columnResizing = false;\n\n _this4.onColumnResizeEnd(event);\n }\n });\n }\n }, {\n key: \"unbindColumnResizeEvents\",\n value: function unbindColumnResizeEvents() {\n document.removeEventListener('document', this.documentColumnResizeListener);\n document.removeEventListener('document', this.documentColumnResizeEndListener);\n }\n }, {\n key: \"onColumnDragStart\",\n value: function onColumnDragStart(e) {\n var event = e.originalEvent,\n column = e.column;\n\n if (this.columnResizing) {\n event.preventDefault();\n return;\n }\n\n this.iconWidth = DomHandler$1.getHiddenElementOuterWidth(this.reorderIndicatorUp);\n this.iconHeight = DomHandler$1.getHiddenElementOuterHeight(this.reorderIndicatorUp);\n this.draggedColumnEl = this.findParentHeader(event.currentTarget);\n this.draggedColumn = column;\n event.dataTransfer.setData('text', 'b'); // Firefox requires this to make dragging possible\n }\n }, {\n key: \"onColumnDragOver\",\n value: function onColumnDragOver(e) {\n var event = e.originalEvent;\n var dropHeader = this.findParentHeader(event.currentTarget);\n\n if (this.props.reorderableColumns && this.draggedColumnEl && dropHeader) {\n event.preventDefault();\n var containerOffset = DomHandler$1.getOffset(this.container);\n var dropHeaderOffset = DomHandler$1.getOffset(dropHeader);\n\n if (this.draggedColumnEl !== dropHeader) {\n var targetLeft = dropHeaderOffset.left - containerOffset.left; //let targetTop = containerOffset.top - dropHeaderOffset.top;\n\n var columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;\n this.reorderIndicatorUp.style.top = dropHeaderOffset.top - containerOffset.top - (this.iconHeight - 1) + 'px';\n this.reorderIndicatorDown.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';\n\n if (event.pageX > columnCenter) {\n this.reorderIndicatorUp.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(this.iconWidth / 2) + 'px';\n this.reorderIndicatorDown.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(this.iconWidth / 2) + 'px';\n this.dropPosition = 1;\n } else {\n this.reorderIndicatorUp.style.left = targetLeft - Math.ceil(this.iconWidth / 2) + 'px';\n this.reorderIndicatorDown.style.left = targetLeft - Math.ceil(this.iconWidth / 2) + 'px';\n this.dropPosition = -1;\n }\n\n this.reorderIndicatorUp.style.display = 'block';\n this.reorderIndicatorDown.style.display = 'block';\n }\n }\n }\n }, {\n key: \"onColumnDragLeave\",\n value: function onColumnDragLeave(e) {\n var event = e.originalEvent;\n\n if (this.props.reorderableColumns && this.draggedColumnEl) {\n event.preventDefault();\n this.reorderIndicatorUp.style.display = 'none';\n this.reorderIndicatorDown.style.display = 'none';\n }\n }\n }, {\n key: \"onColumnDrop\",\n value: function onColumnDrop(e) {\n var _this5 = this;\n\n var event = e.originalEvent,\n column = e.column;\n event.preventDefault();\n\n if (this.draggedColumnEl) {\n var dragIndex = DomHandler$1.index(this.draggedColumnEl);\n var dropIndex = DomHandler$1.index(this.findParentHeader(event.currentTarget));\n var allowDrop = dragIndex !== dropIndex;\n\n if (allowDrop && (dropIndex - dragIndex === 1 && this.dropPosition === -1 || dragIndex - dropIndex === 1 && this.dropPosition === 1)) {\n allowDrop = false;\n }\n\n if (allowDrop) {\n var columns = this.state.columnOrder ? this.getColumns() : React.Children.toArray(this.props.children);\n\n var isSameColumn = function isSameColumn(col1, col2) {\n return col1.props.columnKey || col2.props.columnKey ? ObjectUtils.equals(col1, col2, 'props.columnKey') : ObjectUtils.equals(col1, col2, 'props.field');\n };\n\n var dragColIndex = columns.findIndex(function (child) {\n return isSameColumn(child, _this5.draggedColumn);\n });\n var dropColIndex = columns.findIndex(function (child) {\n return isSameColumn(child, column);\n });\n\n if (dropColIndex < dragColIndex && this.dropPosition === 1) {\n dropColIndex++;\n }\n\n if (dropColIndex > dragColIndex && this.dropPosition === -1) {\n dropColIndex--;\n }\n\n ObjectUtils.reorderArray(columns, dragColIndex, dropColIndex);\n var columnOrder = [];\n\n var _iterator = _createForOfIteratorHelper(columns),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _column = _step.value;\n columnOrder.push(_column.props.columnKey || _column.props.field);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n this.setState({\n columnOrder: columnOrder\n });\n\n if (this.props.onColReorder) {\n this.props.onColReorder({\n dragIndex: dragColIndex,\n dropIndex: dropColIndex,\n columns: columns\n });\n }\n }\n\n this.reorderIndicatorUp.style.display = 'none';\n this.reorderIndicatorDown.style.display = 'none';\n this.draggedColumnEl.draggable = false;\n this.draggedColumnEl = null;\n this.dropPosition = null;\n }\n }\n }, {\n key: \"findParentHeader\",\n value: function findParentHeader(element) {\n if (element.nodeName === 'TH') {\n return element;\n } else {\n var parent = element.parentElement;\n\n while (parent.nodeName !== 'TH') {\n parent = parent.parentElement;\n if (!parent) break;\n }\n\n return parent;\n }\n }\n }, {\n key: \"getExpandedKeys\",\n value: function getExpandedKeys() {\n return this.props.onToggle ? this.props.expandedKeys : this.state.expandedKeys;\n }\n }, {\n key: \"getFirst\",\n value: function getFirst() {\n return this.props.onPage ? this.props.first : this.state.first;\n }\n }, {\n key: \"getRows\",\n value: function getRows() {\n return this.props.onPage ? this.props.rows : this.state.rows;\n }\n }, {\n key: \"getSortField\",\n value: function getSortField() {\n return this.props.onSort ? this.props.sortField : this.state.sortField;\n }\n }, {\n key: \"getSortOrder\",\n value: function getSortOrder() {\n return this.props.onSort ? this.props.sortOrder : this.state.sortOrder;\n }\n }, {\n key: \"getMultiSortMeta\",\n value: function getMultiSortMeta() {\n return this.props.onSort ? this.props.multiSortMeta : this.state.multiSortMeta;\n }\n }, {\n key: \"getFilters\",\n value: function getFilters() {\n return this.props.onFilter ? this.props.filters : this.state.filters;\n }\n }, {\n key: \"findColumnByKey\",\n value: function findColumnByKey(columns, key) {\n if (columns && columns.length) {\n for (var i = 0; i < columns.length; i++) {\n var child = columns[i];\n\n if (child.props.columnKey === key || child.props.field === key) {\n return child;\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"getColumns\",\n value: function getColumns() {\n var columns = React.Children.toArray(this.props.children);\n\n if (columns && columns.length) {\n if (this.props.reorderableColumns && this.state.columnOrder) {\n var orderedColumns = [];\n\n var _iterator2 = _createForOfIteratorHelper(this.state.columnOrder),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var columnKey = _step2.value;\n var column = this.findColumnByKey(columns, columnKey);\n\n if (column) {\n orderedColumns.push(column);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return [].concat(orderedColumns, _toConsumableArray(columns.filter(function (item) {\n return orderedColumns.indexOf(item) < 0;\n })));\n } else {\n return columns;\n }\n }\n\n return null;\n }\n }, {\n key: \"getTotalRecords\",\n value: function getTotalRecords(data) {\n return this.props.lazy ? this.props.totalRecords : data ? data.length : 0;\n }\n }, {\n key: \"isSingleSelectionMode\",\n value: function isSingleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'single';\n }\n }, {\n key: \"isMultipleSelectionMode\",\n value: function isMultipleSelectionMode() {\n return this.props.selectionMode && this.props.selectionMode === 'multiple';\n }\n }, {\n key: \"isRowSelectionMode\",\n value: function isRowSelectionMode() {\n return this.isSingleSelectionMode() || this.isMultipleSelectionMode();\n }\n }, {\n key: \"getFrozenColumns\",\n value: function getFrozenColumns(columns) {\n var frozenColumns = null;\n\n var _iterator3 = _createForOfIteratorHelper(columns),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var col = _step3.value;\n\n if (col.props.frozen) {\n frozenColumns = frozenColumns || [];\n frozenColumns.push(col);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return frozenColumns;\n }\n }, {\n key: \"getScrollableColumns\",\n value: function getScrollableColumns(columns) {\n var scrollableColumns = null;\n\n var _iterator4 = _createForOfIteratorHelper(columns),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var col = _step4.value;\n\n if (!col.props.frozen) {\n scrollableColumns = scrollableColumns || [];\n scrollableColumns.push(col);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return scrollableColumns;\n }\n }, {\n key: \"filterLocal\",\n value: function filterLocal(value) {\n var filteredNodes = [];\n var filters = this.getFilters();\n var columns = React.Children.toArray(this.props.children);\n var isStrictMode = this.props.filterMode === 'strict';\n\n var _iterator5 = _createForOfIteratorHelper(value),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var node = _step5.value;\n\n var copyNode = _objectSpread({}, node);\n\n var localMatch = true;\n var globalMatch = false;\n\n for (var j = 0; j < columns.length; j++) {\n var col = columns[j];\n var filterMeta = filters ? filters[col.props.field] : null;\n var filterField = col.props.field;\n var filterValue = void 0,\n filterConstraint = void 0,\n paramsWithoutNode = void 0,\n options = void 0; //local\n\n if (filterMeta) {\n var filterMatchMode = filterMeta.matchMode || col.props.filterMatchMode || 'startsWith';\n filterValue = filterMeta.value;\n filterConstraint = filterMatchMode === 'custom' ? col.props.filterFunction : FilterService.filters[filterMatchMode];\n options = {\n rowData: node,\n filters: filters,\n props: this.props,\n column: {\n filterMeta: filterMeta,\n filterField: filterField,\n props: col.props\n }\n };\n paramsWithoutNode = {\n filterField: filterField,\n filterValue: filterValue,\n filterConstraint: filterConstraint,\n isStrictMode: isStrictMode,\n options: options\n };\n\n if (isStrictMode && !(this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode)) || !isStrictMode && !(this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode))) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n } //global\n\n\n if (this.props.globalFilter && !globalMatch) {\n var copyNodeForGlobal = _objectSpread({}, copyNode);\n\n filterValue = this.props.globalFilter;\n filterConstraint = FilterService.filters['contains'];\n paramsWithoutNode = {\n filterField: filterField,\n filterValue: filterValue,\n filterConstraint: filterConstraint,\n isStrictMode: isStrictMode\n };\n\n if (isStrictMode && (this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) || this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode)) || !isStrictMode && (this.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) || this.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode))) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n }\n\n var matches = localMatch;\n\n if (this.props.globalFilter) {\n matches = localMatch && globalMatch;\n }\n\n if (matches) {\n filteredNodes.push(copyNode);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return filteredNodes;\n }\n }, {\n key: \"findFilteredNodes\",\n value: function findFilteredNodes(node, paramsWithoutNode) {\n if (node) {\n var matched = false;\n\n if (node.children) {\n var childNodes = _toConsumableArray(node.children);\n\n node.children = [];\n\n var _iterator6 = _createForOfIteratorHelper(childNodes),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var childNode = _step6.value;\n\n var copyChildNode = _objectSpread({}, childNode);\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n\n if (matched) {\n return true;\n }\n }\n }\n }, {\n key: \"isFilterMatched\",\n value: function isFilterMatched(node, _ref) {\n var filterField = _ref.filterField,\n filterValue = _ref.filterValue,\n filterConstraint = _ref.filterConstraint,\n isStrictMode = _ref.isStrictMode,\n options = _ref.options;\n var matched = false;\n var dataFieldValue = ObjectUtils.resolveFieldData(node.data, filterField);\n\n if (filterConstraint(dataFieldValue, filterValue, this.props.filterLocale, options)) {\n matched = true;\n }\n\n if (!matched || isStrictMode && !this.isNodeLeaf(node)) {\n matched = this.findFilteredNodes(node, {\n filterField: filterField,\n filterValue: filterValue,\n filterConstraint: filterConstraint,\n isStrictMode: isStrictMode\n }) || matched;\n }\n\n return matched;\n }\n }, {\n key: \"isNodeLeaf\",\n value: function isNodeLeaf(node) {\n return node.leaf === false ? false : !(node.children && node.children.length);\n }\n }, {\n key: \"processValue\",\n value: function processValue() {\n var data = this.props.value;\n\n if (!this.props.lazy) {\n if (data && data.length) {\n if (this.getSortField() || this.getMultiSortMeta()) {\n if (this.props.sortMode === 'single') data = this.sortSingle(data);else if (this.props.sortMode === 'multiple') data = this.sortMultiple(data);\n }\n\n var localFilters = this.getFilters();\n\n if (localFilters || this.props.globalFilter) {\n data = this.filterLocal(data, localFilters);\n }\n }\n }\n\n return data;\n }\n }, {\n key: \"createTableHeader\",\n value: function createTableHeader(columns, columnGroup) {\n return /*#__PURE__*/React.createElement(TreeTableHeader, {\n columns: columns,\n columnGroup: columnGroup,\n tabIndex: this.props.tabIndex,\n onSort: this.onSort,\n sortField: this.getSortField(),\n sortOrder: this.getSortOrder(),\n multiSortMeta: this.getMultiSortMeta(),\n resizableColumns: this.props.resizableColumns,\n onResizeStart: this.onColumnResizeStart,\n reorderableColumns: this.props.reorderableColumns,\n onDragStart: this.onColumnDragStart,\n onDragOver: this.onColumnDragOver,\n onDragLeave: this.onColumnDragLeave,\n onDrop: this.onColumnDrop,\n onFilter: this.onFilter,\n filters: this.getFilters(),\n filterDelay: this.props.filterDelay\n });\n }\n }, {\n key: \"createTableFooter\",\n value: function createTableFooter(columns, columnGroup) {\n return /*#__PURE__*/React.createElement(TreeTableFooter, {\n columns: columns,\n columnGroup: columnGroup\n });\n }\n }, {\n key: \"createTableBody\",\n value: function createTableBody(value, columns) {\n return /*#__PURE__*/React.createElement(TreeTableBody, {\n value: value,\n columns: columns,\n expandedKeys: this.getExpandedKeys(),\n selectOnEdit: this.props.selectOnEdit,\n onToggle: this.onToggle,\n onExpand: this.props.onExpand,\n onCollapse: this.props.onCollapse,\n paginator: this.props.paginator,\n first: this.getFirst(),\n rows: this.getRows(),\n selectionMode: this.props.selectionMode,\n selectionKeys: this.props.selectionKeys,\n onSelectionChange: this.props.onSelectionChange,\n metaKeySelection: this.props.metaKeySelection,\n onRowClick: this.props.onRowClick,\n onSelect: this.props.onSelect,\n onUnselect: this.props.onUnselect,\n propagateSelectionUp: this.props.propagateSelectionUp,\n propagateSelectionDown: this.props.propagateSelectionDown,\n lazy: this.props.lazy,\n rowClassName: this.props.rowClassName,\n emptyMessage: this.props.emptyMessage,\n loading: this.props.loading,\n contextMenuSelectionKey: this.props.contextMenuSelectionKey,\n onContextMenuSelectionChange: this.props.onContextMenuSelectionChange,\n onContextMenu: this.props.onContextMenu\n });\n }\n }, {\n key: \"createPaginator\",\n value: function createPaginator(position, totalRecords) {\n var className = classNames('p-paginator-' + position, this.props.paginatorClassName);\n return /*#__PURE__*/React.createElement(Paginator, {\n first: this.getFirst(),\n rows: this.getRows(),\n pageLinkSize: this.props.pageLinkSize,\n className: className,\n onPageChange: this.onPageChange,\n template: this.props.paginatorTemplate,\n totalRecords: totalRecords,\n rowsPerPageOptions: this.props.rowsPerPageOptions,\n currentPageReportTemplate: this.props.currentPageReportTemplate,\n leftContent: this.props.paginatorLeft,\n rightContent: this.props.paginatorRight,\n alwaysShow: this.props.alwaysShowPaginator,\n dropdownAppendTo: this.props.paginatorDropdownAppendTo\n });\n }\n }, {\n key: \"createScrollableView\",\n value: function createScrollableView(value, columns, frozen, headerColumnGroup, footerColumnGroup) {\n var header = this.createTableHeader(columns, headerColumnGroup);\n var footer = this.createTableFooter(columns, footerColumnGroup);\n var body = this.createTableBody(value, columns);\n return /*#__PURE__*/React.createElement(TreeTableScrollableView, {\n columns: columns,\n header: header,\n body: body,\n footer: footer,\n scrollHeight: this.props.scrollHeight,\n frozen: frozen,\n frozenWidth: this.props.frozenWidth\n });\n }\n }, {\n key: \"renderScrollableTable\",\n value: function renderScrollableTable(value) {\n var columns = this.getColumns();\n var frozenColumns = this.getFrozenColumns(columns);\n var scrollableColumns = frozenColumns ? this.getScrollableColumns(columns) : columns;\n var frozenView, scrollableView;\n\n if (frozenColumns) {\n frozenView = this.createScrollableView(value, frozenColumns, true, this.props.frozenHeaderColumnGroup, this.props.frozenFooterColumnGroup);\n }\n\n scrollableView = this.createScrollableView(value, scrollableColumns, false, this.props.headerColumnGroup, this.props.footerColumnGroup);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-scrollable-wrapper\"\n }, frozenView, scrollableView);\n }\n }, {\n key: \"renderRegularTable\",\n value: function renderRegularTable(value) {\n var _this6 = this;\n\n var columns = this.getColumns();\n var header = this.createTableHeader(columns, this.props.headerColumnGroup);\n var footer = this.createTableFooter(columns, this.props.footerColumnGroup);\n var body = this.createTableBody(value, columns);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-wrapper\"\n }, /*#__PURE__*/React.createElement(\"table\", {\n style: this.props.tableStyle,\n className: this.props.tableClassName,\n ref: function ref(el) {\n return _this6.table = el;\n }\n }, header, footer, body));\n }\n }, {\n key: \"renderTable\",\n value: function renderTable(value) {\n if (this.props.scrollable) return this.renderScrollableTable(value);else return this.renderRegularTable(value);\n }\n }, {\n key: \"renderLoader\",\n value: function renderLoader() {\n if (this.props.loading) {\n var iconClassName = classNames('p-treetable-loading-icon pi-spin', this.props.loadingIcon);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-loading\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-loading-overlay p-component-overlay\"\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: iconClassName\n })));\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this7 = this;\n\n var value = this.processValue();\n var className = classNames('p-treetable p-component', {\n 'p-treetable-hoverable-rows': this.props.rowHover,\n 'p-treetable-selectable': this.isRowSelectionMode(),\n 'p-treetable-resizable': this.props.resizableColumns,\n 'p-treetable-resizable-fit': this.props.resizableColumns && this.props.columnResizeMode === 'fit',\n 'p-treetable-auto-layout': this.props.autoLayout,\n 'p-treetable-striped': this.props.stripedRows,\n 'p-treetable-gridlines': this.props.showGridlines\n }, this.props.className);\n var table = this.renderTable(value);\n var totalRecords = this.getTotalRecords(value);\n var headerFacet = this.props.header && /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-header\"\n }, this.props.header);\n var footerFacet = this.props.footer && /*#__PURE__*/React.createElement(\"div\", {\n className: \"p-treetable-footer\"\n }, this.props.footer);\n var paginatorTop = this.props.paginator && this.props.paginatorPosition !== 'bottom' && this.createPaginator('top', totalRecords);\n var paginatorBottom = this.props.paginator && this.props.paginatorPosition !== 'top' && this.createPaginator('bottom', totalRecords);\n var loader = this.renderLoader();\n var resizeHelper = this.props.resizableColumns && /*#__PURE__*/React.createElement(\"div\", {\n ref: function ref(el) {\n _this7.resizerHelper = el;\n },\n className: \"p-column-resizer-helper\",\n style: {\n display: 'none'\n }\n });\n var reorderIndicatorUp = this.props.reorderableColumns && /*#__PURE__*/React.createElement(\"span\", {\n ref: function ref(el) {\n return _this7.reorderIndicatorUp = el;\n },\n className: \"pi pi-arrow-down p-datatable-reorder-indicator-up\",\n style: {\n position: 'absolute',\n display: 'none'\n }\n });\n var reorderIndicatorDown = this.props.reorderableColumns && /*#__PURE__*/React.createElement(\"span\", {\n ref: function ref(el) {\n return _this7.reorderIndicatorDown = el;\n },\n className: \"pi pi-arrow-up p-datatable-reorder-indicator-down\",\n style: {\n position: 'absolute',\n display: 'none'\n }\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n id: this.props.id,\n className: className,\n style: this.props.style,\n ref: function ref(el) {\n return _this7.container = el;\n },\n \"data-scrollselectors\": \".p-treetable-scrollable-body\"\n }, loader, headerFacet, paginatorTop, table, paginatorBottom, footerFacet, resizeHelper, reorderIndicatorUp, reorderIndicatorDown);\n }\n }]);\n\n return TreeTable;\n}(Component);\n\n_defineProperty(TreeTable, \"defaultProps\", {\n id: null,\n value: null,\n header: null,\n footer: null,\n style: null,\n className: null,\n tableStyle: null,\n tableClassName: null,\n expandedKeys: null,\n paginator: false,\n paginatorPosition: 'bottom',\n alwaysShowPaginator: true,\n paginatorClassName: null,\n paginatorTemplate: 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown',\n paginatorLeft: null,\n paginatorRight: null,\n paginatorDropdownAppendTo: null,\n pageLinkSize: 5,\n rowsPerPageOptions: null,\n currentPageReportTemplate: '({currentPage} of {totalPages})',\n first: null,\n rows: null,\n totalRecords: null,\n lazy: false,\n sortField: null,\n sortOrder: null,\n multiSortMeta: null,\n sortMode: 'single',\n defaultSortOrder: 1,\n removableSort: false,\n selectionMode: null,\n selectionKeys: null,\n contextMenuSelectionKey: null,\n metaKeySelection: true,\n selectOnEdit: true,\n propagateSelectionUp: true,\n propagateSelectionDown: true,\n autoLayout: false,\n rowClassName: null,\n loading: false,\n loadingIcon: 'pi pi-spinner',\n tabIndex: 0,\n scrollable: false,\n scrollHeight: null,\n reorderableColumns: false,\n headerColumnGroup: null,\n footerColumnGroup: null,\n frozenHeaderColumnGroup: null,\n frozenFooterColumnGroup: null,\n frozenWidth: null,\n resizableColumns: false,\n columnResizeMode: 'fit',\n emptyMessage: null,\n filters: null,\n globalFilter: null,\n filterMode: 'lenient',\n filterDelay: 300,\n filterLocale: undefined,\n rowHover: false,\n showGridlines: false,\n stripedRows: false,\n onFilter: null,\n onExpand: null,\n onCollapse: null,\n onToggle: null,\n onPage: null,\n onSort: null,\n onSelect: null,\n onUnselect: null,\n onRowClick: null,\n onSelectionChange: null,\n onContextMenuSelectionChange: null,\n onColumnResizeEnd: null,\n onColReorder: null,\n onContextMenu: null\n});\n\nexport { TreeTable };\n"],"mappings":"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"},"metadata":{},"sourceType":"module"}