UNPKG

igniteui-react-grids

Version:

Ignite UI React grid components.

5,213 lines 202 kB
import { __extends, __values } from "tslib";
import * as React from 'react';
import { IgrSectionHeader } from './igr-section-header';
import { IgrSummaryRowRoot } from './igr-summary-row-root';
import { IgrSummaryRowSection } from './igr-summary-row-section';
import { IgrColumnWidth } from './igr-column-width';
import { ColumnWidth as ColumnWidth_internal } from './ColumnWidth';
import { HeaderClickAction_$type } from './HeaderClickAction';
import { ColumnShowingAnimationMode_$type } from './ColumnShowingAnimationMode';
import { ColumnPropertyUpdatingAnimationMode, ColumnPropertyUpdatingAnimationMode_$type } from './ColumnPropertyUpdatingAnimationMode';
import { CellDataLoadedAnimationMode_$type } from './CellDataLoadedAnimationMode';
import { RowSelectionAnimationMode_$type } from './RowSelectionAnimationMode';
import { ColumnMovingAnimationMode_$type } from './ColumnMovingAnimationMode';
import { ColumnHidingAnimationMode_$type } from './ColumnHidingAnimationMode';
import { CellSelectionAnimationMode_$type } from './CellSelectionAnimationMode';
import { ColumnExchangingAnimationMode_$type } from './ColumnExchangingAnimationMode';
import { RowHoverAnimationMode_$type } from './RowHoverAnimationMode';
import { DataGridSelectionMode_$type } from './DataGridSelectionMode';
import { GridActivationMode_$type } from './GridActivationMode';
import { GridSelectionBehavior_$type } from './GridSelectionBehavior';
import { IgrDataGridCellEventArgs } from './igr-data-grid-cell-event-args';
import { IgrGridColumnsAutoGeneratedEventArgs } from './igr-grid-columns-auto-generated-event-args';
import { IgrGridColumnsChangedEventArgs } from './igr-grid-columns-changed-event-args';
import { IgrGridSelectedItemsChangedEventArgs } from './igr-grid-selected-items-changed-event-args';
import { IgrGridSelectedKeysChangedEventArgs } from './igr-grid-selected-keys-changed-event-args';
import { IgrGridSelectedCellsChangedEventArgs } from './igr-grid-selected-cells-changed-event-args';
import { IgrGridSelectedCellRangesChangedEventArgs } from './igr-grid-selected-cell-ranges-changed-event-args';
import { IgrGridSortDescriptionsChangedEventArgs } from './igr-grid-sort-descriptions-changed-event-args';
import { IgrGridGroupDescriptionsChangedEventArgs } from './igr-grid-group-descriptions-changed-event-args';
import { IgrGridSummaryDescriptionsChangedEventArgs } from './igr-grid-summary-descriptions-changed-event-args';
import { DataGrid } from "./DataGrid";
import { ensureEnum, ensureBool, CollectionAdapter, toSpinal, brushToString, stringToBrush, initializePropertiesFromCss, NamePatcher, isValidProp, getModifiedProps } from "igniteui-react-core";
import { Thickness } from "igniteui-react-core";
import { ReactRenderer, ReactWrapper, PortalManager } from "igniteui-react-core";
import { DataGridColumn } from './DataGridColumn';
import { IgrDataGridColumn } from './igr-data-grid-column';
import { DataGridCellLayoutPanel } from './DataGridCellLayoutPanel';
import { Base } from "igniteui-react-core";
import { GridExternalWrapper } from './GridExternalWrapper';
import { BrowserTickProvider } from './BrowserTickProvider';
import { BrowserPixelConverter } from './BrowserPixelConverter';
import { DataGridPresenterManager } from './DataGridPresenterManager';
import { DataGridViewportManager } from './DataGridViewportManager';
import { DataGridDelayedExecutionManager } from './DataGridDelayedExecutionManager';
import { DataGridPropertySetter } from './DataGridPropertySetter';
import { IgrGridColumnCollection } from './igr-grid-column-collection';
import { SyncableObservableCollection$1 } from "igniteui-react-core";
import { NotifyCollectionChangedAction } from "igniteui-react-core";
import { Scroller } from "igniteui-react-core";
import { ScrollbarStyle_$type } from "igniteui-react-core";
import { Dragger } from "./Dragger";
import { DataGridStylingDefaults } from './DataGridStylingDefaults';
import { delegateCombine, delegateRemove } from "igniteui-react-core";
import { FontInfo } from "igniteui-react-core";
import { IgrColumnSortDescriptionCollection } from './igr-column-sort-description-collection';
import { IgrColumnGroupDescriptionCollection } from './igr-column-group-description-collection';
import { IgrColumnSummaryDescriptionCollection } from './igr-column-summary-description-collection';
import { IgrFilterExpressionCollection } from "igniteui-react-core";
import { IgrGridSelectedItemsCollection } from "./igr-grid-selected-items-collection";
import { IgrGridSelectedKeysCollection } from "./igr-grid-selected-keys-collection";
import { IgrGridSelectedCellsCollection } from "./igr-grid-selected-cells-collection";
import { IgrGridSelectedCellRangesCollection } from "./igr-grid-selected-cell-ranges-collection";
import { GridSelectedItemsCollection as GridSelectedItemsCollection_internal } from "./GridSelectedItemsCollection";
import { GridSelectedKeysCollection as GridSelectedKeysCollection_internal } from "./GridSelectedKeysCollection";
import { GridSelectedCellsCollection as GridSelectedCellsCollection_internal } from "./GridSelectedCellsCollection";
import { GridSelectedCellRangesCollection as GridSelectedCellRangesCollection_internal } from "./GridSelectedCellRangesCollection";
import { IgrColumnHiddenChangedEventArgs } from "./igr-column-hidden-changed-event-args";
import { PrimaryKeyValue } from "./PrimaryKeyValue";
import { CellKey } from "./CellKey";
import { CellRange } from "./CellRange";
import { IgrGridFilterExpressionsEventArgs } from './igr-grid-filter-expressions-event-args';
import { GridColumnCollection as GridColumnCollection_internal } from './GridColumnCollection';
import { ResponsiveStatesCollection as ResponsiveStatesCollection_internal } from './ResponsiveStatesCollection';
import { IgrResponsiveStatesCollection } from './igr-responsive-states-collection';
import { ResponsiveState } from './ResponsiveState';
import { IgrGridAnimationSettings } from './igr-grid-animation-settings';
import { IgrRowSeparator } from './igr-row-separator';
import { IgrHeaderRowSeparator } from './igr-header-row-separator';
import { ContentChildrenManager } from "igniteui-react-core";
import { IgrGridCellPosition } from "./igr-grid-cell-position";
import { IgrGridActiveCellChangedEventArgs } from "./igr-grid-active-cell-changed-event-args";
import { DataGridScrollerKeyboardListener } from "./DataGridScrollerKeyboardListener";
import { IgrHeaderSeparator } from "./igr-header-separator";
import { IgrColumnResizingSeparator } from "./igr-column-resizing-separator";
import { ColumnResizingMode_$type } from "./ColumnResizingMode";
import { ColumnResizingAnimationMode_$type } from "./ColumnResizingAnimationMode";
import { ColumnMovingMode_$type } from "./ColumnMovingMode";
import { IgrColumnMovingSeparator } from "./igr-column-moving-separator";
import { SortIndicatorStyle_$type } from "./SortIndicatorStyle";
import { GroupHeaderDisplayMode_$type } from "./GroupHeaderDisplayMode";
import { SummaryScope_$type } from "./SummaryScope";
import { GroupSummaryDisplayMode_$type } from "./GroupSummaryDisplayMode";
import { IgrPinnedAreaSeparator } from "./igr-pinned-area-separator";
import { fromRect } from "igniteui-react-core";
import { ColumnOptionsIconAlignment_$type } from "./ColumnOptionsIconAlignment";
import { ColumnOptionsIconBehavior_$type } from "./ColumnOptionsIconBehavior";
import { IgrColumnPinnedChangedEventArgs } from "./igr-column-pinned-changed-event-args";
import { ControlDisplayDensity_$type } from "igniteui-react-core";
import { CornerRadius } from "igniteui-react-core";
import { EditModeType_$type } from "./EditModeType";
import { EditModeClickAction_$type } from "./EditModeClickAction";
import { IgrGridCellValueChangingEventArgs } from "./igr-grid-cell-value-changing-event-args";
import { IgrGridDataCommittingEventArgs } from "./igr-grid-data-committing-event-args";
import { IgrGridDataCommittedEventArgs } from "./igr-grid-data-committed-event-args";
import { IgrGridSizeChangedEventArgs } from "./igr-grid-size-changed-event-args";
import { IgrGridColumnWidthChangedEventArgs } from "./igr-grid-column-width-changed-event-args";
import { DataGridAccessibilityLayoutPanel } from './DataGridAccessibilityLayoutPanel';
import { IgrGridCellEditStartedEventArgs } from "./igr-grid-cell-edit-started-event-args";
import { IgrGridCellEditEndedEventArgs } from "./igr-grid-cell-edit-ended-event-args";
import { IgrGridRowEditStartedEventArgs } from "./igr-grid-row-edit-started-event-args";
import { IgrGridRowEditEndedEventArgs } from "./igr-grid-row-edit-ended-event-args";
import { IgrGridSelectionChangedEventArgs } from "./igr-grid-selection-changed-event-args";
import { EnterKeyBehaviors_$type } from "./EnterKeyBehaviors";
import { EnterKeyBehaviorAfterEdit_$type } from "./EnterKeyBehaviorAfterEdit";
import { MergedCellMode_$type } from "./MergedCellMode";
import { MergedCellEvaluationCriteria_$type } from "./MergedCellEvaluationCriteria";
import { FilterUIType, FilterUIType_$type } from "./FilterUIType";
import { FilterLogicalOperator_$type } from "./FilterLogicalOperator";
import { FilterComparisonType_$type } from "./FilterComparisonType";
import { IgrGridCustomFilterRequestedEventArgs } from "./igr-grid-custom-filter-requested-event-args";
import { IgrColumnGrouping } from "./igr-column-grouping";
import { CellContentVerticalAlignment_$type } from "./CellContentVerticalAlignment";
import { IgrDateTimeCellInfo } from "./igr-date-time-cell-info";
import { IgrImageCellInfo } from "./igr-image-cell-info";
import { IgrNumericCellInfo } from "./igr-numeric-cell-info";
import { IgrRowSeparatorInfo } from "./igr-row-separator-info";
import { IgrSectionHeaderCellInfo } from "./igr-section-header-cell-info";
import { IgrTemplateCellInfo } from "./igr-template-cell-info";
import { IgrTemplateHeaderCellInfo } from "./igr-template-header-cell-info";
import { IgrTemplateSectionHeaderCellInfo } from "./igr-template-section-header-cell-info";
import { IgrTextCellInfo } from "./igr-text-cell-info";
import { IgrTextHeaderCellInfo } from "./igr-text-header-cell-info";
import { IgrFilterCellInfo } from "./igr-filter-cell-info";
import { IgrDataGridPager } from "./igr-data-grid-pager";
import { IgrDataGridToolbar } from './igr-data-grid-toolbar';
import { IgrDataSourceRootSummariesChangedEventArgs } from "igniteui-react-core";
var GridStylingDefaults = {};
var IgrDataGrid = /** @class */ /*@__PURE__*/ (function (_super) {
    __extends(IgrDataGrid, _super);
    function IgrDataGrid(props) {
        var _this = _super.call(this, props) || this;
        _this.contentColumns = [];
        /**
         * The columns actually present in the grid. Do not directly modify this array.
         * This array's contents can be modified by causing React to reproject the child content.
         * Or adding and removing columns from the manual columns collection on the columns property.
         */
        _this.combinedColumns = [];
        _this._columns = null;
        _this._disableManualColumnSync = false;
        _this._mounted = false;
        _this._columnsAdapter = null;
        _this._renderer = null;
        _this._scroller = null;
        _this._dragger = null;
        _this._wrapper = null;
        _this._grid = null;
        _this._dataSource = null;
        _this._insetLeft = 0;
        _this._insetTop = 0;
        _this._insetRight = 0;
        _this._insetBottom = 0;
        _this._isPagerVisible = false;
        _this._selectedItems = null;
        _this._selectedKeys = null;
        _this._selectedCells = null;
        _this._selectedCellRanges = null;
        _this._pinnedItems = null;
        _this._pinnedKeys = null;
        _this._responsiveStates = null;
        _this._actualColumns = null;
        _this.__p = null;
        _this._hasUserValues = new Set();
        _this._stylingContainer = null;
        _this._stylingParent = null;
        _this._inStyling = false;
        _this._filterExpressionsChanging = null;
        _this._filterExpressionsChanging_wrapped = null;
        _this._filterExpressionsChanged = null;
        _this._filterExpressionsChanged_wrapped = null;
        _this._cellPreviewPointerDown = null;
        _this._cellPreviewPointerDown_wrapped = null;
        _this._cellPreviewPointerUp = null;
        _this._cellPreviewPointerUp_wrapped = null;
        _this._cellPointerDown = null;
        _this._cellPointerDown_wrapped = null;
        _this._cellPointerUp = null;
        _this._cellPointerUp_wrapped = null;
        _this._cellClicked = null;
        _this._cellClicked_wrapped = null;
        _this._sortDescriptionsChanged = null;
        _this._sortDescriptionsChanged_wrapped = null;
        _this._groupDescriptionsChanged = null;
        _this._groupDescriptionsChanged_wrapped = null;
        _this._summaryDescriptionsChanged = null;
        _this._summaryDescriptionsChanged_wrapped = null;
        _this._columnHiddenChanged = null;
        _this._columnHiddenChanged_wrapped = null;
        _this._columnPinnedChanged = null;
        _this._columnPinnedChanged_wrapped = null;
        _this._cellValueChanging = null;
        _this._cellValueChanging_wrapped = null;
        _this._dataCommitted = null;
        _this._dataCommitted_wrapped = null;
        _this._dataCommitting = null;
        _this._dataCommitting_wrapped = null;
        _this._rootSummariesChanged = null;
        _this._rootSummariesChanged_wrapped = null;
        _this._sizeChanged = null;
        _this._sizeChanged_wrapped = null;
        _this._actualColumnsChanged = null;
        _this._actualColumnsChanged_wrapped = null;
        _this._columnsAutoGenerated = null;
        _this._columnsAutoGenerated_wrapped = null;
        _this._selectedItemsChanged = null;
        _this._selectedItemsChanged_wrapped = null;
        _this._selectedKeysChanged = null;
        _this._selectedKeysChanged_wrapped = null;
        _this._selectedCellsChanged = null;
        _this._selectedCellsChanged_wrapped = null;
        _this._selectionChanged = null;
        _this._selectionChanged_wrapped = null;
        _this._activeCellChanged = null;
        _this._activeCellChanged_wrapped = null;
        _this._selectedCellRangesChanged = null;
        _this._selectedCellRangesChanged_wrapped = null;
        _this._columnWidthChanged = null;
        _this._columnWidthChanged_wrapped = null;
        _this._cellEditStarted = null;
        _this._cellEditStarted_wrapped = null;
        _this._cellEditEnded = null;
        _this._cellEditEnded_wrapped = null;
        _this._rowEditStarted = null;
        _this._rowEditStarted_wrapped = null;
        _this._rowEditEnded = null;
        _this._rowEditEnded_wrapped = null;
        _this._customFilterRequested = null;
        _this._customFilterRequested_wrapped = null;
        _this._actualPrimaryKeyChange = null;
        _this._actualPrimaryKeyChange_wrapped = null;
        if (_this._styling) {
            NamePatcher.ensureStylablePatched(Object.getPrototypeOf(_this));
        }
        _this._getMainRef = _this._getMainRef.bind(_this);
        _this._getFilterDialog = _this._getFilterDialog.bind(_this);
        _this._getColumnGroupingRef = _this._getColumnGroupingRef.bind(_this);
        _this._getContentAreaRef = _this._getContentAreaRef.bind(_this);
        _this._getPagerRef = _this._getPagerRef.bind(_this);
        _this._getToolbarRef = _this._getToolbarRef.bind(_this);
        _this._contentChildrenManager = new ContentChildrenManager(function (ch) { return ch.props.name || ch.key || ch.props.field; }, function (ch) { return ch.name || ch.key || ch.field; }, function () { return _this._updateContentChildren(); });
        var useCanvas = false;
        if (props.useCanvas) {
            _this.useCanvas = true;
            useCanvas = true;
        }
        if (props.useAccessibility) {
            _this.useAccessibility = true;
        }
        if (document) {
            _this._container = document.createElement("div");
            _this._container.style.display = "block";
            _this._container.style.width = "100%";
            _this._container.style.height = "100%";
            _this._container.style.boxSizing = "border-box";
            _this._container.style.overflow = "hidden";
        }
        var root;
        root = _this._container;
        _this.requestRender = _this.requestRender.bind(_this);
        _this._portalManager = new PortalManager("filterDialog", _this.requestRender);
        _this._portalManager.disableContentPortal = true;
        _this._renderer = new ReactRenderer(root, document, true, DataGridStylingDefaults, _this._portalManager);
        _this._wrapper = _this._renderer;
        _this._implementation = new DataGrid();
        var grid = _this.i;
        _this._grid = grid;
        _this._grid.externalObject = _this;
        _this._columnsAdapter = new CollectionAdapter(_this.contentColumns, _this.i.columns, _this.combinedColumns, function (c) { return c.i; }, function (i) {
            i._provideRenderer(_this._wrapper);
            if (_this._container && _this._container.parentElement) {
                i._styling(_this._container, _this, _this);
            }
        }, function (i) { i._provideRenderer(null); }, function (i) { return i.name || i.field; });
        grid.externalGrid = new GridExternalWrapper(_this);
        grid.tickProvider = new BrowserTickProvider(_this._renderer);
        grid.platformPixelConverter = new BrowserPixelConverter();
        if (_this.useAccessibility) {
            _this._contentLayout = new DataGridAccessibilityLayoutPanel(_this._renderer, new DataGridPresenterManager(_this._grid, false), window.devicePixelRatio);
        }
        else {
            _this._contentLayout = new DataGridCellLayoutPanel(_this._renderer, new DataGridPresenterManager(_this._grid, useCanvas), window.devicePixelRatio);
        }
        grid.renderingEngine = _this._contentLayout;
        grid.viewportManager = new DataGridViewportManager(_this);
        grid.delayedExecutionManager = new DataGridDelayedExecutionManager(_this._renderer);
        grid.propertySetter = new DataGridPropertySetter();
        //grid.provideContainer(ren);
        var scroller = new Scroller();
        scroller.scrollbarStyle = _this.scrollbarStyle;
        _this._scroller = scroller;
        _this._scroller.keyboardListener = new DataGridScrollerKeyboardListener(grid);
        scroller.provideContainer(_this._renderer);
        _this._content = (_this._contentLayout.element.getNativeElement());
        scroller.provideContent(new ReactWrapper(_this._content, _this._renderer));
        scroller.onScrolling = function () { return _this.onScroll(); };
        scroller.onScrollStart = function () { return _this.onScrollStart(); };
        scroller.onScrollStop = function () { return _this.onScrollStop(); };
        scroller.viewportWidth = _this._container.clientWidth;
        scroller.viewportHeight = _this._container.clientHeight;
        grid.dragger = new Dragger();
        grid.dragger.provideContainer(_this._renderer);
        grid.dragger.viewportWidth = _this._container.clientWidth;
        grid.dragger.viewportHeight = _this._container.clientHeight;
        _this.initializeProperties();
        var isFilterRowEnabled = _this.filterUIType === FilterUIType.FilterRow;
        var filterRowHeight = isFilterRowEnabled ? _this.actualRowHeight + _this.rowSeparatorHeight : 0;
        scroller.verticalTrackStartInset = _this.actualHeaderHeight + _this.rowSeparatorHeight + filterRowHeight;
        _this._renderer.addSizeWatcher(function () {
            _this.containerResized();
        });
        _this._mounted = true;
        return _this;
    }
    IgrDataGrid.prototype._insertExternalColumnAtIndex = function (index, column) {
        //let contentCount = this.contentColumns.length;
        var contentCount = this._columnsAdapter.actualContent.length;
        this.columns.insert(index - contentCount, column);
    };
    IgrDataGrid.prototype._removeExternalColumn = function (column) {
        var ind = -1;
        for (var i = 0; i < this.columns.count; i++) {
            if (this.columns.item(i) === column) {
                ind = i;
                break;
            }
        }
        if (ind >= 0) {
            this.columns.removeAt(ind);
        }
    };
    IgrDataGrid.prototype._updateContentChildren = function () {
        this.contentColumns.length = 0;
        var contentChildrenActual = this._contentChildrenManager.contentChildrenActual;
        for (var i = 0; i < contentChildrenActual.length; i++) {
            if ((DataGridColumn.$type).isAssignableFrom(contentChildrenActual[i].i.$type)) {
                if (!contentChildrenActual[i]._iniailizedMarkup) {
                    contentChildrenActual[i]._iniailizedMarkup = true;
                    contentChildrenActual[i].isFromMarkup = true;
                }
                this.contentColumns.push(contentChildrenActual[i]);
            }
        }
        if (this._columnsAdapter !== null) {
            this._columnsAdapter.notifyContentChanged();
        }
    };
    Object.defineProperty(IgrDataGrid.prototype, "actualDataSource", {
        get: function () {
            return this.i.actualDataSource;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype._getMainRef = function (ref) {
        this._elRef = ref;
        this.i.syncBorder();
        this._contentLayout.rootElement = this._elRef;
    };
    IgrDataGrid.prototype._getContentAreaRef = function (ref) {
        this._contentAreaRef = ref;
    };
    IgrDataGrid.prototype._getFilterDialog = function (ref) {
        this._filterDialogRef = ref;
    };
    IgrDataGrid.prototype._getColumnGroupingRef = function (ref) {
        this._columnGroupingRef = ref;
        if (this._columnGroupingRef)
            this._columnGroupingRef.targetGrid = this;
    };
    IgrDataGrid.prototype._getPagerRef = function (ref) {
        if (ref) {
            this._pagerRef = ref;
            this._pagerRef.targetGrid = this;
            this.i.pager = this._pagerRef.i;
        }
        else {
            this._pagerRef.targetGrid = null;
            this.i.pager = null;
            this._pagerRef = ref;
            // When the pager is shown it replaces the internal grid's datasource with a new paged one. So when hiding the pager
            // we need to assign back the original datasource.
            this._grid.itemsSource = this._dataSource;
        }
    };
    IgrDataGrid.prototype._getToolbarRef = function (ref) {
        if (ref) {
            this.i.toolbar = ref.i;
            ref.targetGrid = this;
        }
    };
    IgrDataGrid.prototype._ensureColumnsAreManual = function () {
        this._disableManualColumnSync = true;
        this._columnsAdapter.shiftContentToManual(this.columns, function (i) { return i.isFromMarkup = false; });
        this._disableManualColumnSync = false;
    };
    Object.defineProperty(IgrDataGrid.prototype, "columns", {
        /**
         * A collection or manually added columns for the grid.
        */
        get: function () {
            var _this = this;
            if (this._columns === null) {
                var coll = new IgrGridColumnCollection();
                var inner = coll._innerColl;
                inner.addListener(function (sender, e) {
                    if (_this._disableManualColumnSync) {
                        return;
                    }
                    switch (e.action) {
                        case NotifyCollectionChangedAction.Add:
                            _this._columnsAdapter.insertManualItem(e.newStartingIndex, e.newItems.item(0));
                            break;
                        case NotifyCollectionChangedAction.Remove:
                            _this._columnsAdapter.removeManualItemAt(e.oldStartingIndex);
                            break;
                        case NotifyCollectionChangedAction.Replace:
                            _this._columnsAdapter.removeManualItemAt(e.oldStartingIndex);
                            _this._columnsAdapter.insertManualItem(e.newStartingIndex, e.newItems.item(0));
                            break;
                        case NotifyCollectionChangedAction.Reset:
                            _this._columnsAdapter.clearManualItems();
                            break;
                    }
                });
                this._columns = coll;
            }
            return this._columns;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "height", {
        get: function () {
            return this._height;
        },
        set: function (value) {
            this._height = value;
            if (this._elRef) {
                this._elRef.style.height = value;
                this.containerResized();
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "width", {
        get: function () {
            return this._width;
        },
        set: function (value) {
            this._width = value;
            if (this._elRef) {
                this._elRef.style.width = value;
                this.containerResized();
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isGroupByAreaVisible", {
        /**
         * Gets or sets if the Column Grouping Area should be shown and enabled
        */
        get: function () {
            return this._isGroupByAreaVisible;
        },
        set: function (value) {
            this._isGroupByAreaVisible = ensureBool(value);
            this.i.isGroupByAreaVisible = this._isGroupByAreaVisible;
            this.i.columnGrouping = this._columnGroupingRef;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "useCanvas", {
        get: function () {
            return this._useCanvas;
        },
        set: function (value) {
            this._useCanvas = ensureBool(value);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "useAccessibility", {
        get: function () {
            return this._useAccessibility;
        },
        set: function (value) {
            this._useAccessibility = ensureBool(value);
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype._setScrollbarStyle = function (style) {
        if (this._scroller) {
            this._scroller.scrollbarStyle = style;
        }
    };
    IgrDataGrid.prototype._setScrollbarColor = function (color) {
        if (this._scroller) {
            this._scroller.scrollbarBrush = color;
        }
    };
    IgrDataGrid.prototype.render = function () {
        // if (!this._childrenDiffer(this.props.children)) {
        // 	let div = React.createElement("div", {
        // 		ref: (ref) => {
        // 			this._elRef = ref;
        // 		},
        // 		children: this.props.children
        // 	});
        // 	return div;
        // } else {
        var children = this._contentChildrenManager.getChildren(this.props.children);
        this._portalManager.onRender(children);
        if (this.isToolbarVisible) {
            var toolbar_1 = React.createElement(IgrDataGridToolbar, {
                key: "toolbar",
                ref: this._getToolbarRef,
                borderWidthTop: 0,
                borderWidthRight: 0,
                borderWidthBottom: 1,
                borderWidthLeft: 0
            });
            children.push(toolbar_1);
        }
        if (this._isGroupByAreaVisible == true) {
            var columnGrouping = React.createElement(IgrColumnGrouping, {
                ref: this._getColumnGroupingRef,
                key: "columnGrouping"
            });
            children.push(columnGrouping);
        }
        var main = React.createElement("div", { key: "content", ref: this._getContentAreaRef, style: { overflow: "hidden", flex: "1" } });
        children.push(main);
        if (this.isPagerVisible) {
            var pager = React.createElement(IgrDataGridPager, { key: "pager", ref: this._getPagerRef });
            children.push(pager);
        }
        var div = React.createElement("div", {
            className: "ig-data-grid igr-data-grid",
            ref: this._getMainRef,
            style: { boxSizing: "border-box", overflow: "hidden", display: "flex", flexDirection: "column" },
            children: children
        });
        return div;
        //}
    };
    IgrDataGrid.prototype.destroy = function () {
        this._wrapper.destroy();
    };
    IgrDataGrid.prototype.componentDidMount = function () {
        if (!this._mounted) {
            this._mounted = true;
            if (this.i) {
                if (this._scroller) {
                    this._scroller.onAttachedToUI();
                }
                if (this._grid.dragger) {
                    this._grid.dragger.onAttachedToUI();
                }
                if (this._grid.renderingEngine) {
                    this._grid.renderingEngine.attach();
                }
            }
            return;
        }
        this._elRef.style.width = this._width ? this._width : "";
        this._elRef.style.height = this._height ? this._height : "";
        this._contentAreaRef.appendChild(this._container);
        this.containerResized();
        this.initializeContent();
    };
    IgrDataGrid.prototype.componentWillUnmount = function () {
        //this._grid.destroy();
        if (this.i) {
            if (this._scroller) {
                this._scroller.onDetachedFromUI();
            }
            if (this._grid.dragger) {
                this._grid.dragger.onDetachedFromUI();
            }
            if (this._grid.renderingEngine) {
                this._grid.renderingEngine.detach();
            }
        }
        this._mounted = false;
    };
    IgrDataGrid.prototype.createImplementation = function () {
        //let test = Grid;
        return new DataGrid();
    };
    IgrDataGrid.prototype.ngOnInit = function () {
    };
    Object.defineProperty(IgrDataGrid.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.onImplementationCreated = function () {
    };
    IgrDataGrid.prototype.requestRender = function () {
        this.setState({});
    };
    IgrDataGrid.prototype._focusScroller = function () {
        this._scroller.focus();
    };
    IgrDataGrid.prototype._setDefaultCursor = function () {
        if (this._elRef.style.cursor !== "") {
            this._elRef.style.cursor = "";
        }
    };
    IgrDataGrid.prototype._setResizeCursor = function () {
        if (this._elRef.style.cursor !== "col-resize") {
            this._elRef.style.cursor = "col-resize";
        }
    };
    IgrDataGrid.prototype._setHandCursor = function () {
        if (this._elRef.style.cursor !== "grabbing") {
            this._elRef.style.cursor = "grabbing";
        }
    };
    IgrDataGrid.prototype._setBorder = function (borderColor, borderLeft, borderTop, borderRight, borderBottom, radiusTopLeft, radiusTopRight, radiusBottomLeft, radiusBottomRight) {
        if (this._elRef) {
            if (borderLeft !== 0 || borderTop !== 0 || borderRight !== 0 || borderBottom !== 0) {
                this._elRef.style.borderStyle = "solid";
                this._elRef.style.borderColor = borderColor;
                this._elRef.style.borderTopWidth = borderTop + "px";
                this._elRef.style.borderRightWidth = borderRight + "px";
                this._elRef.style.borderBottomWidth = borderBottom + "px";
                this._elRef.style.borderLeftWidth = borderLeft + "px";
                this._elRef.style.borderTopLeftRadius = radiusTopLeft + "px";
                this._elRef.style.borderTopRightRadius = radiusTopRight + "px";
                this._elRef.style.borderBottomLeftRadius = radiusBottomLeft + "px";
                this._elRef.style.borderBottomRightRadius = radiusBottomRight + "px";
            }
            else {
                this._elRef.style.borderStyle = "none";
            }
        }
    };
    IgrDataGrid.prototype._setScrollerVerticalTrackInset = function (inset) {
        this._scroller.verticalTrackStartInset = inset;
    };
    IgrDataGrid.prototype.initializeContent = function () {
        // supports themes or custom properties set in CSS 
        var prev = this._grid.columnPropertyUpdatingAnimationMode;
        this._grid.columnPropertyUpdatingAnimationMode = ColumnPropertyUpdatingAnimationMode.None;
        this._styling(this._container, this);
        this._grid.columnPropertyUpdatingAnimationMode = prev;
        this._updateContentChildren();
        prev = this._grid.columnPropertyUpdatingAnimationMode;
        this._grid.columnPropertyUpdatingAnimationMode = ColumnPropertyUpdatingAnimationMode.None;
        for (var i = 0; i < this.actualColumns.count; i++) {
            var c = this.actualColumns.item(i);
            c._styling(this._container, this, this);
        }
        this._grid.columnPropertyUpdatingAnimationMode = prev;
        this._grid.itemsSource = this._dataSource;
    };
    /*
     * Notify the DataGrid that it has been added to the DOM. This is useful when you are creating and
     * rendering the React component before actually adding it to the document.
     */
    IgrDataGrid.prototype.notifyDOMInsertion = function () {
        var prev = this._grid.columnPropertyUpdatingAnimationMode;
        this._grid.columnPropertyUpdatingAnimationMode = ColumnPropertyUpdatingAnimationMode.None;
        this._styling(this._container, this);
        this._grid.columnPropertyUpdatingAnimationMode = prev;
        prev = this._grid.columnPropertyUpdatingAnimationMode;
        this._grid.columnPropertyUpdatingAnimationMode = ColumnPropertyUpdatingAnimationMode.None;
        for (var i = 0; i < this.actualColumns.count; i++) {
            var c = this.actualColumns.item(i);
            c._styling(this._container, this, this);
        }
        this._grid.columnPropertyUpdatingAnimationMode = prev;
    };
    IgrDataGrid.prototype.initializeProperties = function () {
        var e_1, _a;
        try {
            for (var _b = __values(Object.keys(this.props)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var p = _c.value;
                if (isValidProp(this, p)) {
                    this[p] = this.props[p];
                }
            }
        }
        catch (e_1_1) {
            e_1 = { error: e_1_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_1)
                    throw e_1.error;
            }
        }
    };
    IgrDataGrid.prototype.shouldComponentUpdate = function (nextProps, nextState) {
        var e_2, _a;
        var mod = getModifiedProps(this.props, nextProps);
        try {
            for (var _b = __values(Object.keys(mod)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var p = _c.value;
                if (isValidProp(this, p)) {
                    this[p] = mod[p];
                }
            }
        }
        catch (e_2_1) {
            e_2 = { error: e_2_1 };
        }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return))
                    _a.call(_b);
            }
            finally {
                if (e_2)
                    throw e_2.error;
            }
        }
        return true;
    };
    IgrDataGrid.prototype.containerResized = function () {
        var width = this._container.clientWidth;
        var height = this._container.clientHeight;
        this._scroller.viewportWidth = width;
        this._scroller.viewportHeight = height;
        this._grid.dragger.viewportWidth = width;
        this._grid.dragger.viewportHeight = height;
        this._grid.onSizeChanged(width, height);
        if (this._grid.model.actualVisibleRegion.isEmpty &&
            width > 0 && height > 0) {
            this._grid.setViewport(0, 0, width, height);
        }
        else {
            this.onScroll();
        }
    };
    ;
    IgrDataGrid.prototype.refreshContentSize = function () {
        if (this._content != null) {
            var width = this._grid.model.absoluteWidth;
            var height = this._grid.model.absoluteHeight;
            if (this._scroller != null) {
                this._scroller.contentWidth = width;
                this._scroller.contentHeight = height;
            }
        }
    };
    IgrDataGrid.prototype.onScroll = function () {
        var top = this._scroller.scrollTop;
        var left = this._scroller.scrollLeft;
        var width = this._scroller.viewportWidth;
        var height = this._scroller.viewportHeight;
        //console.log("top:" + top);
        this._grid.setViewport(left, top, left + width, top + height);
    };
    IgrDataGrid.prototype.onScrollStart = function () {
        this._grid.notifyScrollStart();
    };
    IgrDataGrid.prototype.onScrollStop = function () {
        this._grid.notifyScrollStop();
    };
    IgrDataGrid.prototype.scrollTo = function (x, y) {
        this._scroller.scrollTo(x, y);
        //let width = this._scroller.viewportWidth;
        //let height = this._scroller.viewportHeight;
        //this._grid.setViewport(x, y, x + width, y + height);
    };
    Object.defineProperty(IgrDataGrid.prototype, "dataSource", {
        get: function () {
            return this._dataSource;
        },
        set: function (value) {
            this._dataSource = value;
            if (this._grid != null) {
                this._grid.itemsSource = this._dataSource;
            }
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.forColumnsWithPropertyPath = function (propertyPath, callback) {
        for (var i = 0; i < this.i.actualColumns.count; i++) {
            var col = this.i.actualColumns.item(i).externalObject;
            if (col.field == propertyPath) {
                callback(col);
            }
        }
    };
    Object.defineProperty(IgrDataGrid.prototype, "defaultColumnWidth", {
        /**
         * Gets or sets the default column width to use if a column as no local width.
         * */
        get: function () {
            var ext = this.i.defaultColumnWidth.externalObject;
            if (!ext) {
                ext = new IgrColumnWidth();
                ext._implementation = this.i.defaultColumnWidth;
            }
            return ext;
        },
        set: function (value) {
            if (typeof value == "string") {
                var int = ColumnWidth_internal.parse(value);
                var ext = new IgrColumnWidth();
                ext._implementation = int;
                value = ext;
            }
            this.i.defaultColumnWidth = value.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "insetLeft", {
        /**
         * Gets or sets the amount of left inset space to use around the grid content.
        */
        get: function () {
            return this._insetLeft;
        },
        set: function (v) {
            this._insetLeft = +v;
            var inset = new Thickness(1, this._insetLeft, this._insetTop, this._insetRight, this._insetBottom);
            this.i.inset = inset;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "insetTop", {
        /**
         * Gets or sets the amount of top inset space to use around the grid content.
        */
        get: function () {
            return this._insetTop;
        },
        set: function (v) {
            this._insetTop = +v;
            var inset = new Thickness(1, this._insetLeft, this._insetTop, this._insetRight, this._insetBottom);
            this.i.inset = inset;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "insetRight", {
        /**
         * Gets or sets the amount of right inset space to use around the grid content.
        */
        get: function () {
            return this._insetLeft;
        },
        set: function (v) {
            this._insetRight = +v;
            var inset = new Thickness(1, this._insetLeft, this._insetTop, this._insetRight, this._insetBottom);
            this.i.inset = inset;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "insetBottom", {
        /**
         * Gets or sets the amount of bottom inset space to use around the grid content.
        */
        get: function () {
            return this._insetBottom;
        },
        set: function (v) {
            this._insetBottom = +v;
            var inset = new Thickness(1, this._insetLeft, this._insetTop, this._insetRight, this._insetBottom);
            this.i.inset = inset;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isPagerVisible", {
        /**
         * Gets or sets whether to show the pager or not.
        */
        get: function () {
            return this.i.isPagerVisible;
        },
        set: function (value) {
            var v = ensureBool(value);
            if (this.i.isPagerVisible !== v) {
                this.i.isPagerVisible = v;
                if (this._mounted) {
                    this.setState({});
                }
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isToolbarVisible", {
        /**
         * Gets or sets whether to show the toolbar.
        */
        get: function () {
            return this.i.isToolbarVisible;
        },
        set: function (value) {
            this.i.isToolbarVisible = ensureBool(value);
        },
        enumerable: false,
        configurable: true
    });
    /**
     * Get the cell that contains the provided coordinates.
     */
    IgrDataGrid.prototype.getHitCell = function (x, y) {
        var cell = this.i.getHitCell(x, y);
        if (!cell) {
            return null;
        }
        if (!cell.externalObject) {
            var ext = null;
            switch (cell.$type.name) {
                case "DateTimeCellModel":
                    ext = new IgrDateTimeCellInfo();
                    break;
                case "ImageCellModel":
                    ext = new IgrImageCellInfo();
                    break;
                case "NumericCellModel":
                    ext = new IgrNumericCellInfo();
                    break;
                case "RowSeparatorModel":
                    ext = new IgrRowSeparatorInfo();
                    break;
                case "SectionHeaderCellModel":
                    ext = new IgrSectionHeaderCellInfo();
                    break;
                case "TemplateCellModel":
                    ext = new IgrTemplateCellInfo();
                    break;
                case "TemplateHeaderCellModel":
                    ext = new IgrTemplateHeaderCellInfo();
                    break;
                case "TemplateSectionHeaderCellModel":
                    ext = new IgrTemplateSectionHeaderCellInfo();
                    break;
                case "TextCellModel":
                    ext = new IgrTextCellInfo();
                    break;
                case "TextHeaderCellModel":
                    ext = new IgrTextHeaderCellInfo();
                    break;
                case "FilterCellModel":
                    ext = new IgrFilterCellInfo();
                    break;
            }
            ext._implementation = cell;
            cell.externalObject = ext;
        }
        return cell.externalObject;
    };
    Object.defineProperty(IgrDataGrid.prototype, "columnResizingMode", {
        /**
     * Gets or sets the type of column resizing to use.
    */
        get: function () {
            return this.i.columnResizingMode;
        },
        set: function (v) {
            this.i.columnResizingMode = ensureEnum(ColumnResizingMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnMovingMode", {
        /**
         * Gets or sets the type column moving to use.
        */
        get: function () {
            return this.i.columnMovingMode;
        },
        set: function (v) {
            this.i.columnMovingMode = ensureEnum(ColumnMovingMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isRowHoverEnabled", {
        /**
         * Gets or sets whether the row will highlight when hovered.
        */
        get: function () {
            return this.i.isRowHoverEnabled;
        },
        set: function (v) {
            this.i.isRowHoverEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowHoverBackground", {
        /**
         * Gets or sets the background color for rows when hovered.
        */
        get: function () {
            return brushToString(this.i.rowHoverBackground);
        },
        set: function (v) {
            this.i.rowHoverBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowHoverTextColor", {
        /**
         * Gets or sets the text color for rows when hovered.
        */
        get: function () {
            return brushToString(this.i.rowHoverTextColor);
        },
        set: function (v) {
            this.i.rowHoverTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editRowBorder", {
        /**
         * Gets or sets the border color for rows being edited.
        */
        get: function () {
            return brushToString(this.i.editRowBorder);
        },
        set: function (v) {
            this.i.editRowBorder = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editRowBorderWidthBottom", {
        get: function () {
            return this.i.editRowBorderWidth ? this.i.editRowBorderWidth.bottom : NaN;
        },
        set: function (v) {
            this.ensureEditRowBorderWidth();
            this.i.editRowBorderWidth.bottom = +v;
            this.i.editRowBorderWidth = this.i.editRowBorderWidth;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editRowBorderWidthLeft", {
        get: function () {
            return this.i.editRowBorderWidth ? this.i.editRowBorderWidth.left : NaN;
        },
        set: function (v) {
            this.ensureEditRowBorderWidth();
            this.i.editRowBorderWidth.left = +v;
            this.i.editRowBorderWidth = this.i.editRowBorderWidth;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editRowBorderWidthRight", {
        get: function () {
            return this.i.editRowBorderWidth ? this.i.editRowBorderWidth.right : NaN;
        },
        set: function (v) {
            this.ensureEditRowBorderWidth();
            this.i.editRowBorderWidth.right = +v;
            this.i.editRowBorderWidth = this.i.editRowBorderWidth;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editRowBorderWidthTop", {
        get: function () {
            return this.i.editRowBorderWidth ? this.i.editRowBorderWidth.top : NaN;
        },
        set: function (v) {
            this.ensureEditRowBorderWidth();
            this.i.editRowBorderWidth.top = +v;
            this.i.editRowBorderWidth = this.i.editRowBorderWidth;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.ensureEditRowBorderWidth = function () {
        if (this.i.editRowBorderWidth) {
            return;
        }
        this.i.editRowBorderWidth = new Thickness(2);
    };
    Object.defineProperty(IgrDataGrid.prototype, "sectionHeader", {
        /**
         * Gets or sets the header type used for sectioning off groups of rows.
        */
        get: function () {
            var r = this.i.sectionHeader;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrSectionHeader._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.sectionHeader = null : this.i.sectionHeader = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRowRoot", {
        /**
         * Gets or sets the cell definition used for summary rows at the root level.
        */
        get: function () {
            var r = this.i.summaryRowRoot;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrSummaryRowRoot._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.summaryRowRoot = null : this.i.summaryRowRoot = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRowSection", {
        /**
         * Gets or sets the cell definition used for summary rows at the section level.
        */
        get: function () {
            var r = this.i.summaryRowSection;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrSummaryRowSection._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.summaryRowSection = null : this.i.summaryRowSection = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSeparator", {
        /**
         * Gets or sets the row seperator settings.
        */
        get: function () {
            var r = this.i.rowSeparator;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrRowSeparator._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.rowSeparator = null : this.i.rowSeparator = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerRowSeparator", {
        /**
         * Gets or sets the header row seperator settings.
        */
        get: function () {
            var r = this.i.headerRowSeparator;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrHeaderRowSeparator._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.headerRowSeparator = null : this.i.headerRowSeparator = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerSeparator", {
        /**
         * Gets or sets the header seperator settings.
        */
        get: function () {
            var r = this.i.headerSeparator;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrHeaderSeparator._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.headerSeparator = null : this.i.headerSeparator = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnResizingSeparator", {
        /**
         * Gets or sets the column resizing seperator settings.
        */
        get: function () {
            var r = this.i.columnResizingSeparator;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrColumnResizingSeparator._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.columnResizingSeparator = null : this.i.columnResizingSeparator = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnMovingSeparator", {
        /**
         * Gets or sets the column resizing seperator settings.
        */
        get: function () {
            var r = this.i.columnMovingSeparator;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrColumnMovingSeparator._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.columnMovingSeparator = null : this.i.columnMovingSeparator = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pinnedAreaSeparator", {
        /**
         * Gets or sets the pinned area separator settings.
        */
        get: function () {
            var r = this.i.pinnedAreaSeparator;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = IgrPinnedAreaSeparator._createFromInternal(r);
                if (e) {
                    e._implementation = r;
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            if (v != null && this._stylingContainer && v._styling)
                v._styling(this._stylingContainer, this, this);
            v == null ? this.i.pinnedAreaSeparator = null : this.i.pinnedAreaSeparator = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "autoGenerateDesiredProperties", {
        /**
         * Gets or sets the desired properties the grid will automatically generate columns for.
        */
        get: function () {
            return this.i.autoGenerateDesiredProperties;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.autoGenerateDesiredProperties = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "dataSourceDesiredProperties", {
        /**
         * Gets or sets the desired properties for the data source to load. If specified the data source may decide to constrain the properties it fetches to these properties and must make sure that at least those properties are loaded, rather than the default behavior for that data source.
        */
        get: function () {
            return this.i.dataSourceDesiredProperties;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.dataSourceDesiredProperties = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "density", {
        /**
         * Gets or sets the display density to use for the grid.
        */
        get: function () {
            return this.i.density;
        },
        set: function (v) {
            this.i.density = ensureEnum(ControlDisplayDensity_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualRowHeight", {
        /**
         * Gets the actual height for the rows in the grid.
        */
        get: function () {
            return this.i.actualRowHeight;
        },
        set: function (v) {
            this.i.actualRowHeight = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowHeight", {
        /**
         * Gets or sets the height to use for the rows in the grid. If not set the grid will
         * use the default value for the set display density.
        */
        get: function () {
            return this.i.rowHeight;
        },
        set: function (v) {
            this.i.rowHeight = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "defaultColumnMinWidth", {
        /**
         * Gets or sets the default minimum width to use on all columns. Ignored if NaN.
        */
        get: function () {
            return this.i.defaultColumnMinWidth;
        },
        set: function (v) {
            this.i.defaultColumnMinWidth = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualHeaderHeight", {
        /**
         * Gets the height used for the header row.
        */
        get: function () {
            return this.i.actualHeaderHeight;
        },
        set: function (v) {
            this.i.actualHeaderHeight = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerHeight", {
        /**
         * Gets or sets the height to use for the header row.
        */
        get: function () {
            return this.i.headerHeight;
        },
        set: function (v) {
            this.i.headerHeight = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerClickAction", {
        /**
         * Returns/sets the action to take when a column header is clicked.
        */
        get: function () {
            return this.i.headerClickAction;
        },
        set: function (v) {
            this.i.headerClickAction = ensureEnum(HeaderClickAction_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editMode", {
        /**
         * Gets or sets the type of edit mode
        */
        get: function () {
            return this.i.editMode;
        },
        set: function (v) {
            this.i.editMode = ensureEnum(EditModeType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editModeClickAction", {
        /**
         * Gets or sets the type of click action required to enter edit mode.
        */
        get: function () {
            return this.i.editModeClickAction;
        },
        set: function (v) {
            this.i.editModeClickAction = ensureEnum(EditModeClickAction_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editOnKeyPress", {
        /**
         * Gets or sets whether edit mode will begin as soon as you start typing while a cell is active.
        */
        get: function () {
            return this.i.editOnKeyPress;
        },
        set: function (v) {
            this.i.editOnKeyPress = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "autoGenerateColumns", {
        /**
         * Configures whether or not the grid will autogenerate columns when the data source is set.
        */
        get: function () {
            return this.i.autoGenerateColumns;
        },
        set: function (v) {
            this.i.autoGenerateColumns = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSeparatorHeight", {
        /**
         * Sets or gets the height to use for the row separators.
        */
        get: function () {
            return this.i.rowSeparatorHeight;
        },
        set: function (v) {
            this.i.rowSeparatorHeight = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isPlaceholderRenderingEnabled", {
        /**
         * Configures whether or not place holders are used for cells who do not have their data yet.
        */
        get: function () {
            return this.i.isPlaceholderRenderingEnabled;
        },
        set: function (v) {
            this.i.isPlaceholderRenderingEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnAddingAnimationMode", {
        /**
         * Sets or gets the Column Adding Animation mode to use.
        */
        get: function () {
            return this.i.columnAddingAnimationMode;
        },
        set: function (v) {
            this.i.columnAddingAnimationMode = ensureEnum(ColumnShowingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnPropertyUpdatingAnimationMode", {
        /**
         * Sets or gets the Column Property Updating Animation mode to use.
        */
        get: function () {
            return this.i.columnPropertyUpdatingAnimationMode;
        },
        set: function (v) {
            this.i.columnPropertyUpdatingAnimationMode = ensureEnum(ColumnPropertyUpdatingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellDataLoadedAnimationMode", {
        /**
         * Sets or gets the cell data loaded animation mode to use.
        */
        get: function () {
            return this.i.cellDataLoadedAnimationMode;
        },
        set: function (v) {
            this.i.cellDataLoadedAnimationMode = ensureEnum(CellDataLoadedAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSelectionAnimationMode", {
        /**
         * Sets or gets the row selection animation mode to use.
        */
        get: function () {
            return this.i.rowSelectionAnimationMode;
        },
        set: function (v) {
            this.i.rowSelectionAnimationMode = ensureEnum(RowSelectionAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowHoverAnimationMode", {
        /**
         * Sets or gets the row hover animation mode to use.
        */
        get: function () {
            return this.i.rowHoverAnimationMode;
        },
        set: function (v) {
            this.i.rowHoverAnimationMode = ensureEnum(RowHoverAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellSelectionAnimationMode", {
        /**
         * Sets or gets the cell selection animation mode to use.
        */
        get: function () {
            return this.i.cellSelectionAnimationMode;
        },
        set: function (v) {
            this.i.cellSelectionAnimationMode = ensureEnum(CellSelectionAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "animationSettings", {
        /**
         * Sets or gets the default animation settings for the grid.
        */
        get: function () {
            var r = this.i.animationSettings;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrGridAnimationSettings();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            v == null ? this.i.animationSettings = null : this.i.animationSettings = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnResizingAnimationMode", {
        /**
         * Sets or gets the column resizing animation mode to use. Only applies when resizing in Deferred mode.
        */
        get: function () {
            return this.i.columnResizingAnimationMode;
        },
        set: function (v) {
            this.i.columnResizingAnimationMode = ensureEnum(ColumnResizingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnShowingAnimationMode", {
        /**
         * Sets or gets the column showing animation mode to use.
        */
        get: function () {
            return this.i.columnShowingAnimationMode;
        },
        set: function (v) {
            this.i.columnShowingAnimationMode = ensureEnum(ColumnShowingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnMovingAnimationMode", {
        /**
         * Sets or gets the column moving animation mode to use.
        */
        get: function () {
            return this.i.columnMovingAnimationMode;
        },
        set: function (v) {
            this.i.columnMovingAnimationMode = ensureEnum(ColumnMovingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnHidingAnimationMode", {
        /**
         * Sets or gets the column hiding animation mode to use.
        */
        get: function () {
            return this.i.columnHidingAnimationMode;
        },
        set: function (v) {
            this.i.columnHidingAnimationMode = ensureEnum(ColumnHidingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnExchangingAnimationMode", {
        /**
         * Sets or gets the column exchanging animation mode to use.
        */
        get: function () {
            return this.i.columnExchangingAnimationMode;
        },
        set: function (v) {
            this.i.columnExchangingAnimationMode = ensureEnum(ColumnExchangingAnimationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectionMode", {
        /**
         * Sets or gets the grid selection mode.
        */
        get: function () {
            return this.i.selectionMode;
        },
        set: function (v) {
            this.i.selectionMode = ensureEnum(DataGridSelectionMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "activationMode", {
        /**
         * Sets or gets the grid selection mode.
        */
        get: function () {
            return this.i.activationMode;
        },
        set: function (v) {
            this.i.activationMode = ensureEnum(GridActivationMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectionBehavior", {
        /**
         * Sets or gets how selection behaves in the grid.
        */
        get: function () {
            return this.i.selectionBehavior;
        },
        set: function (v) {
            this.i.selectionBehavior = ensureEnum(GridSelectionBehavior_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "mouseDragSelectionEnabled", {
        /**
         * Gets or sets the ability to select rows or cells via mouse dragging. Currently only applies when SelectionMode is MultipleRow or RangeCell.
        */
        get: function () {
            return this.i.mouseDragSelectionEnabled;
        },
        set: function (v) {
            this.i.mouseDragSelectionEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedItems", {
        /**
         * Gets which items are currently selected in the grid. Collection can be updated to programatically select items.
        */
        get: function () {
            if (this._selectedItems === null) {
                var coll = new IgrGridSelectedItemsCollection();
                var innerColl = this.i.selectedItems;
                if (!innerColl) {
                    innerColl = new GridSelectedItemsCollection_internal();
                }
                this._selectedItems = coll._fromInner(innerColl);
            }
            return this._selectedItems;
        },
        set: function (v) {
            if (this._selectedItems !== null) {
                this._selectedItems._setSyncTarget(null);
                this._selectedItems = null;
            }
            var coll = new IgrGridSelectedItemsCollection();
            this._selectedItems = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(Base.$type);
            var innerColl = this.i.selectedItems;
            if (!innerColl) {
                innerColl = new GridSelectedItemsCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._selectedItems._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedKeys", {
        /**
         * Gets which primary key values are currently selected in the grid. Collection can be updated to programatically select items.
        */
        get: function () {
            if (this._selectedKeys === null) {
                var coll = new IgrGridSelectedKeysCollection();
                var innerColl = this.i.selectedKeys;
                if (!innerColl) {
                    innerColl = new GridSelectedKeysCollection_internal();
                }
                this._selectedKeys = coll._fromInner(innerColl);
            }
            return this._selectedKeys;
        },
        set: function (v) {
            if (this._selectedKeys !== null) {
                this._selectedKeys._setSyncTarget(null);
                this._selectedKeys = null;
            }
            var coll = new IgrGridSelectedKeysCollection();
            this._selectedKeys = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(PrimaryKeyValue.$type);
            var innerColl = this.i.selectedKeys;
            if (!innerColl) {
                innerColl = new GridSelectedKeysCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._selectedKeys._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedCells", {
        /**
         * Gets which cells are currently selected in the grid. Collection can be updated to programatically select cells.
        */
        get: function () {
            if (this._selectedCells === null) {
                var coll = new IgrGridSelectedCellsCollection();
                var innerColl = this.i.selectedCells;
                if (!innerColl) {
                    innerColl = new GridSelectedCellsCollection_internal();
                }
                this._selectedCells = coll._fromInner(innerColl);
            }
            return this._selectedCells;
        },
        set: function (v) {
            if (this._selectedCells !== null) {
                this._selectedCells._setSyncTarget(null);
                this._selectedCells = null;
            }
            var coll = new IgrGridSelectedCellsCollection();
            this._selectedCells = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(CellKey.$type);
            var innerColl = this.i.selectedCells;
            if (!innerColl) {
                innerColl = new GridSelectedCellsCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._selectedCells._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedCellRanges", {
        /**
         * Gets which cell ranges are currently selected in the grid. Collection can be updated to programatically select cells.
        */
        get: function () {
            if (this._selectedCellRanges === null) {
                var coll = new IgrGridSelectedCellRangesCollection();
                var innerColl = this.i.selectedCellRanges;
                if (!innerColl) {
                    innerColl = new GridSelectedCellRangesCollection_internal();
                }
                this._selectedCellRanges = coll._fromInner(innerColl);
            }
            return this._selectedCellRanges;
        },
        set: function (v) {
            if (this._selectedCellRanges !== null) {
                this._selectedCellRanges._setSyncTarget(null);
                this._selectedCellRanges = null;
            }
            var coll = new IgrGridSelectedCellRangesCollection();
            this._selectedCellRanges = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(CellRange.$type);
            var innerColl = this.i.selectedCellRanges;
            if (!innerColl) {
                innerColl = new GridSelectedCellRangesCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._selectedCellRanges._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pinnedItems", {
        /**
         * Gets which items are currently pinned in the grid. Collection can be updated to programatically pin items.
        */
        get: function () {
            if (this._pinnedItems === null) {
                var coll = new IgrGridSelectedItemsCollection();
                var innerColl = this.i.pinnedItems;
                if (!innerColl) {
                    innerColl = new GridSelectedItemsCollection_internal();
                }
                this._pinnedItems = coll._fromInner(innerColl);
            }
            return this._pinnedItems;
        },
        set: function (v) {
            if (this._pinnedItems !== null) {
                this._pinnedItems._setSyncTarget(null);
                this._pinnedItems = null;
            }
            var coll = new IgrGridSelectedItemsCollection();
            this._pinnedItems = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(Base.$type);
            var innerColl = this.i.pinnedItems;
            if (!innerColl) {
                innerColl = new GridSelectedItemsCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._pinnedItems._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pinnedKeys", {
        /**
         * Gets which primary keys are currently pinned in the grid. Collection can be updated to programatically pin items.
        */
        get: function () {
            if (this._pinnedKeys === null) {
                var coll = new IgrGridSelectedKeysCollection();
                var innerColl = this.i.pinnedKeys;
                if (!innerColl) {
                    innerColl = new GridSelectedKeysCollection_internal();
                }
                this._pinnedKeys = coll._fromInner(innerColl);
            }
            return this._pinnedKeys;
        },
        set: function (v) {
            if (this._pinnedKeys !== null) {
                this._pinnedKeys._setSyncTarget(null);
                this._pinnedKeys = null;
            }
            var coll = new IgrGridSelectedKeysCollection();
            this._pinnedKeys = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(PrimaryKeyValue.$type);
            var innerColl = this.i.pinnedKeys;
            if (!innerColl) {
                innerColl = new GridSelectedKeysCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._pinnedKeys._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isColumnOptionsEnabled", {
        /**
         * Gets or sets whether to show the column options UI in the headers for columns.
        */
        get: function () {
            return this.i.isColumnOptionsEnabled;
        },
        set: function (v) {
            this.i.isColumnOptionsEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isGroupRowSticky", {
        /**
         * Gets or sets if group rows will stick to the top of the grid.
        */
        get: function () {
            return this.i.isGroupRowSticky;
        },
        set: function (v) {
            this.i.isGroupRowSticky = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isHeaderSeparatorVisible", {
        /**
         * Gets or sets if header separators are rendered.
        */
        get: function () {
            return this.i.isHeaderSeparatorVisible;
        },
        set: function (v) {
            this.i.isHeaderSeparatorVisible = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellSelectedBackground", {
        /**
         * Gets or sets the default background color to use for content cells when a row is in a selected state
        */
        get: function () {
            return brushToString(this.i.cellSelectedBackground);
        },
        set: function (v) {
            this.i.cellSelectedBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sectionHeaderSelectedBackground", {
        /**
         * Gets or sets the default background color to use for section header cells when a row is in a selected state
        */
        get: function () {
            return brushToString(this.i.sectionHeaderSelectedBackground);
        },
        set: function (v) {
            this.i.sectionHeaderSelectedBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRootBackground", {
        /**
         * Gets or sets the default background color to use for summary cells at the root level.
        */
        get: function () {
            return brushToString(this.i.summaryRootBackground);
        },
        set: function (v) {
            this.i.summaryRootBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summarySectionBackground", {
        /**
         * Gets or sets the default background color to use for summary cells at the section level.
        */
        get: function () {
            return brushToString(this.i.summarySectionBackground);
        },
        set: function (v) {
            this.i.summarySectionBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pinnedRowOpacity", {
        /**
         * Gets or sets the default opacity to use for pinned rows
        */
        get: function () {
            return this.i.pinnedRowOpacity;
        },
        set: function (v) {
            this.i.pinnedRowOpacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editTextStyle", {
        /**
         * Gets or sets the font to use for cells that have been edited.
        */
        get: function () {
            if (this.i.editTextStyle == null) {
                return null;
            }
            return this.i.editTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.editTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "editOpacity", {
        /**
         * Gets or sets the default opacity for unsaved cell edits.
        */
        get: function () {
            return this.i.editOpacity;
        },
        set: function (v) {
            this.i.editOpacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "deletedTextColor", {
        /**
         * Gets or sets the text color for unsaved deleted rows.
        */
        get: function () {
            return brushToString(this.i.deletedTextColor);
        },
        set: function (v) {
            this.i.deletedTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "stickyRowBackground", {
        /**
         * Gets or sets the default color to use for sticky rows
        */
        get: function () {
            return brushToString(this.i.stickyRowBackground);
        },
        set: function (v) {
            this.i.stickyRowBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pinnedRowBackground", {
        /**
         * Gets or sets the default color to use for pinned rows
        */
        get: function () {
            return brushToString(this.i.pinnedRowBackground);
        },
        set: function (v) {
            this.i.pinnedRowBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "lastStickyRowBackground", {
        /**
         * Gets or sets the default color to use for the last sticky row
        */
        get: function () {
            return brushToString(this.i.lastStickyRowBackground);
        },
        set: function (v) {
            this.i.lastStickyRowBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "activeCell", {
        /**
         * Gets or sets the position of the active cell.
        */
        get: function () {
            var r = this.i.activeCell;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrGridCellPosition();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        set: function (v) {
            v == null ? this.i.activeCell = null : this.i.activeCell = v.i;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellBackground", {
        /**
         * Gets or sets the default background color to use for content cells
        */
        get: function () {
            return brushToString(this.i.cellBackground);
        },
        set: function (v) {
            this.i.cellBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellTextColor", {
        /**
         * Gets or sets the default text color to use for content cells
        */
        get: function () {
            return brushToString(this.i.cellTextColor);
        },
        set: function (v) {
            this.i.cellTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerSortIndicatorColor", {
        /**
         * Gets or sets the default text color to use for content cells
        */
        get: function () {
            return brushToString(this.i.headerSortIndicatorColor);
        },
        set: function (v) {
            this.i.headerSortIndicatorColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerSortIndicatorStyle", {
        /**
         * Gets or sets the default render style for sort indicators in header cells.
        */
        get: function () {
            return this.i.headerSortIndicatorStyle;
        },
        set: function (v) {
            this.i.headerSortIndicatorStyle = ensureEnum(SortIndicatorStyle_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellTextStyle", {
        /**
         * Gets or sets the font to use for content cells
        */
        get: function () {
            if (this.i.cellTextStyle == null) {
                return null;
            }
            return this.i.cellTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.cellTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sectionHeaderBackground", {
        /**
         * Gets or sets the default background color to use for section header cells
        */
        get: function () {
            return brushToString(this.i.sectionHeaderBackground);
        },
        set: function (v) {
            this.i.sectionHeaderBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sectionHeaderTextColor", {
        /**
         * Gets or sets the default text color to use for section header cells
        */
        get: function () {
            return brushToString(this.i.sectionHeaderTextColor);
        },
        set: function (v) {
            this.i.sectionHeaderTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sectionHeaderTextStyle", {
        /**
         * Gets or sets the font to use for section header cells
        */
        get: function () {
            if (this.i.sectionHeaderTextStyle == null) {
                return null;
            }
            return this.i.sectionHeaderTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.sectionHeaderTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRootLabelTextStyle", {
        /**
         * Gets or sets the font to use for summary labels at the root level.
        */
        get: function () {
            if (this.i.summaryRootLabelTextStyle == null) {
                return null;
            }
            return this.i.summaryRootLabelTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.summaryRootLabelTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summarySectionLabelTextStyle", {
        /**
         * Gets or sets the font to use for summary labels at the section level.
        */
        get: function () {
            if (this.i.summarySectionLabelTextStyle == null) {
                return null;
            }
            return this.i.summarySectionLabelTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.summarySectionLabelTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRootValueTextColor", {
        /**
         * Gets or sets the default text color to use for summary cells at the root level.
        */
        get: function () {
            return brushToString(this.i.summaryRootValueTextColor);
        },
        set: function (v) {
            this.i.summaryRootValueTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRootValueTextStyle", {
        /**
         * Gets or sets the font to use for summary values at the root level.
        */
        get: function () {
            if (this.i.summaryRootValueTextStyle == null) {
                return null;
            }
            return this.i.summaryRootValueTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.summaryRootValueTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summarySectionValueTextStyle", {
        /**
         * Gets or sets the font to use for summary values at the section level.
        */
        get: function () {
            if (this.i.summarySectionValueTextStyle == null) {
                return null;
            }
            return this.i.summarySectionValueTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.summarySectionValueTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summarySectionValueTextColor", {
        /**
         * Gets or sets the default text color to use for summary cells at the section level.
        */
        get: function () {
            return brushToString(this.i.summarySectionValueTextColor);
        },
        set: function (v) {
            this.i.summarySectionValueTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRootLabelTextColor", {
        /**
         * Gets or sets the default text color to use for summary labels in summary cells at the root level.
        */
        get: function () {
            return brushToString(this.i.summaryRootLabelTextColor);
        },
        set: function (v) {
            this.i.summaryRootLabelTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summarySectionLabelTextColor", {
        /**
         * Gets or sets the default text color to use for summary labels in summary cells at the section level.
        */
        get: function () {
            return brushToString(this.i.summarySectionLabelTextColor);
        },
        set: function (v) {
            this.i.summarySectionLabelTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryRootSelectedBackground", {
        /**
         * Gets or sets the default background color to use for summary cells at the root level.
        */
        get: function () {
            return brushToString(this.i.summaryRootSelectedBackground);
        },
        set: function (v) {
            this.i.summaryRootSelectedBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summarySectionSelectedBackground", {
        /**
         * Gets or sets the default background color to use for summary cells at the section level.
        */
        get: function () {
            return brushToString(this.i.summarySectionSelectedBackground);
        },
        set: function (v) {
            this.i.summarySectionSelectedBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pinnedAreaSeparatorWidth", {
        /**
         * Gets or sets the width of the pinned area separators.
        */
        get: function () {
            return this.i.pinnedAreaSeparatorWidth;
        },
        set: function (v) {
            this.i.pinnedAreaSeparatorWidth = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerSeparatorWidth", {
        /**
         * Gets or sets the width of the header separators.
        */
        get: function () {
            return this.i.headerSeparatorWidth;
        },
        set: function (v) {
            this.i.headerSeparatorWidth = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerSeparatorBackground", {
        /**
         * Gets or sets the default background color to use for header separators.
        */
        get: function () {
            return brushToString(this.i.headerSeparatorBackground);
        },
        set: function (v) {
            this.i.headerSeparatorBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerBackground", {
        /**
         * Gets or sets the default background color to use for header cells
        */
        get: function () {
            return brushToString(this.i.headerBackground);
        },
        set: function (v) {
            this.i.headerBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerTextColor", {
        /**
         * Gets or sets the default text color to use for header cells
        */
        get: function () {
            return brushToString(this.i.headerTextColor);
        },
        set: function (v) {
            this.i.headerTextColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerTextStyle", {
        /**
         * Gets or sets the font to use for header cells
        */
        get: function () {
            if (this.i.headerTextStyle == null) {
                return null;
            }
            return this.i.headerTextStyle.fontString;
        },
        set: function (v) {
            var fi = new FontInfo();
            fi.fontString = v;
            this.i.headerTextStyle = fi;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSeparatorBackground", {
        /**
         * Gets or sets the default background color to use for row separators
        */
        get: function () {
            return brushToString(this.i.rowSeparatorBackground);
        },
        set: function (v) {
            this.i.rowSeparatorBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "headerRowSeparatorBackground", {
        get: function () {
            return brushToString(this.i.headerRowSeparatorBackground);
        },
        set: function (v) {
            this.i.headerRowSeparatorBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSeparatorStickyRowBackground", {
        /**
         * Gets or sets the default sticky row background color to use for row separators
        */
        get: function () {
            return brushToString(this.i.rowSeparatorStickyRowBackground);
        },
        set: function (v) {
            this.i.rowSeparatorStickyRowBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSeparatorLastStickyRowBackground", {
        /**
         * Gets or sets the default last sticky row background color to use for row separators
        */
        get: function () {
            return brushToString(this.i.rowSeparatorLastStickyRowBackground);
        },
        set: function (v) {
            this.i.rowSeparatorLastStickyRowBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowSeparatorPinnedRowBackground", {
        /**
         * Gets or sets the pinned row background color to use for row separators
        */
        get: function () {
            return brushToString(this.i.rowSeparatorPinnedRowBackground);
        },
        set: function (v) {
            this.i.rowSeparatorPinnedRowBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnResizingSeparatorWidth", {
        /**
         * Sets or gets the width to use for the column resizing separator.
        */
        get: function () {
            return this.i.columnResizingSeparatorWidth;
        },
        set: function (v) {
            this.i.columnResizingSeparatorWidth = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnResizingSeparatorOpacity", {
        /**
         * Gets or sets the opacity of the column Resizing separator.
        */
        get: function () {
            return this.i.columnResizingSeparatorOpacity;
        },
        set: function (v) {
            this.i.columnResizingSeparatorOpacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnMovingSeparatorWidth", {
        /**
         * Sets or gets the width to use for the column resizing separator.
        */
        get: function () {
            return this.i.columnMovingSeparatorWidth;
        },
        set: function (v) {
            this.i.columnMovingSeparatorWidth = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnMovingSeparatorOpacity", {
        /**
         * Gets or sets the opacity of the column moving separator.
        */
        get: function () {
            return this.i.columnMovingSeparatorOpacity;
        },
        set: function (v) {
            this.i.columnMovingSeparatorOpacity = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnResizingSeparatorBackground", {
        /**
         * Gets or sets the default background color to use for column resizing separator.
        */
        get: function () {
            return brushToString(this.i.columnResizingSeparatorBackground);
        },
        set: function (v) {
            this.i.columnResizingSeparatorBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnMovingSeparatorBackground", {
        /**
         * Gets or sets the default background color to use for column moving separator.
        */
        get: function () {
            return brushToString(this.i.columnMovingSeparatorBackground);
        },
        set: function (v) {
            this.i.columnMovingSeparatorBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "shiftSectionContent", {
        /**
         * Gets or sets if the section header content should be shifted into the normal column scrollable area when there are pinned columns
        */
        get: function () {
            return this.i.shiftSectionContent;
        },
        set: function (v) {
            this.i.shiftSectionContent = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnOptionsIconAlignment", {
        /**
         * Gets or sets the column options icon alignment in header cells.
        */
        get: function () {
            return this.i.columnOptionsIconAlignment;
        },
        set: function (v) {
            this.i.columnOptionsIconAlignment = ensureEnum(ColumnOptionsIconAlignment_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnOptionsIconColor", {
        /**
         * Gets or sets the column options icon color in header cells.
        */
        get: function () {
            return brushToString(this.i.columnOptionsIconColor);
        },
        set: function (v) {
            this.i.columnOptionsIconColor = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnOptionsIconBehavior", {
        /**
         * Gets or sets how the column options icon will behave inside header cells.
        */
        get: function () {
            return this.i.columnOptionsIconBehavior;
        },
        set: function (v) {
            this.i.columnOptionsIconBehavior = ensureEnum(ColumnOptionsIconBehavior_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "border", {
        /**
         * Gets or sets the border color around the grid.
        */
        get: function () {
            return brushToString(this.i.border);
        },
        set: function (v) {
            this.i.border = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualBorderWidth", {
        /**
         * Gets the actual border width.
        */
        get: function () {
            return this.i.actualBorderWidth;
        },
        set: function (v) {
            this.i.actualBorderWidth = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "borderWidthBottom", {
        get: function () {
            return this.i.borderWidth ? this.i.borderWidth.bottom : NaN;
        },
        set: function (v) {
            this.ensureBorderWidth();
            this.i.borderWidth.bottom = +v;
            this.i.borderWidth = this.i.borderWidth;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "borderWidthLeft", {
        get: function () {
            return this.i.borderWidth ? this.i.borderWidth.left : NaN;
        },
        set: function (v) {
            this.ensureBorderWidth();
            this.i.borderWidth.left = +v;
            this.i.borderWidth = this.i.borderWidth;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "borderWidthRight", {
        get: function () {
            return this.i.borderWidth ? this.i.borderWidth.right : NaN;
        },
        set: function (v) {
            this.ensureBorderWidth();
            this.i.borderWidth.right = +v;
            this.i.borderWidth = this.i.borderWidth;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "borderWidthTop", {
        get: function () {
            return this.i.borderWidth ? this.i.borderWidth.top : NaN;
        },
        set: function (v) {
            this.ensureBorderWidth();
            this.i.borderWidth.top = +v;
            this.i.borderWidth = this.i.borderWidth;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.ensureBorderWidth = function () {
        if (this.i.borderWidth) {
            return;
        }
        this.i.borderWidth = new Thickness(2);
    };
    Object.defineProperty(IgrDataGrid.prototype, "notifyOnAllSelectionChanges", {
        /**
         * Gets or sets if the grid should notify on programmatic selection changes as well as changes from the UI.
        */
        get: function () {
            return this.i.notifyOnAllSelectionChanges;
        },
        set: function (v) {
            this.i.notifyOnAllSelectionChanges = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cornerRadiusBottomRight", {
        get: function () {
            return this.i.cornerRadius ? this.i.cornerRadius.c : NaN;
        },
        set: function (v) {
            this.ensureCornerRadius();
            this.i.cornerRadius.c = +v;
            this.i.cornerRadius = this.i.cornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cornerRadiusBottomLeft", {
        get: function () {
            return this.i.cornerRadius ? this.i.cornerRadius.b : NaN;
        },
        set: function (v) {
            this.ensureCornerRadius();
            this.i.cornerRadius.b = +v;
            this.i.cornerRadius = this.i.cornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cornerRadiusTopLeft", {
        get: function () {
            return this.i.cornerRadius ? this.i.cornerRadius.d : NaN;
        },
        set: function (v) {
            this.ensureCornerRadius();
            this.i.cornerRadius.d = +v;
            this.i.cornerRadius = this.i.cornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cornerRadiusTopRight", {
        get: function () {
            return this.i.cornerRadius ? this.i.cornerRadius.e : NaN;
        },
        set: function (v) {
            this.ensureCornerRadius();
            this.i.cornerRadius.e = +v;
            this.i.cornerRadius = this.i.cornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.ensureCornerRadius = function () {
        if (this.i.cornerRadius) {
            return;
        }
        this.i.cornerRadius = new CornerRadius(2);
    };
    Object.defineProperty(IgrDataGrid.prototype, "actualCornerRadiusBottomRight", {
        get: function () {
            return this.i.actualCornerRadius ? this.i.actualCornerRadius.c : NaN;
        },
        set: function (v) {
            this.ensureActualCornerRadius();
            this.i.actualCornerRadius.c = +v;
            this.i.actualCornerRadius = this.i.actualCornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualCornerRadiusBottomLeft", {
        get: function () {
            return this.i.actualCornerRadius ? this.i.actualCornerRadius.b : NaN;
        },
        set: function (v) {
            this.ensureActualCornerRadius();
            this.i.actualCornerRadius.b = +v;
            this.i.actualCornerRadius = this.i.actualCornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualCornerRadiusTopLeft", {
        get: function () {
            return this.i.actualCornerRadius ? this.i.actualCornerRadius.d : NaN;
        },
        set: function (v) {
            this.ensureActualCornerRadius();
            this.i.actualCornerRadius.d = +v;
            this.i.actualCornerRadius = this.i.actualCornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualCornerRadiusTopRight", {
        get: function () {
            return this.i.actualCornerRadius ? this.i.actualCornerRadius.e : NaN;
        },
        set: function (v) {
            this.ensureActualCornerRadius();
            this.i.actualCornerRadius.e = +v;
            this.i.actualCornerRadius = this.i.actualCornerRadius;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.ensureActualCornerRadius = function () {
        if (this.i.actualCornerRadius) {
            return;
        }
        this.i.actualCornerRadius = new CornerRadius(2);
    };
    Object.defineProperty(IgrDataGrid.prototype, "isActiveCellStyleEnabled", {
        /**
         * Gets or sets whether the active cell style will be applied to cells when made active.
        */
        get: function () {
            return this.i.isActiveCellStyleEnabled;
        },
        set: function (v) {
            this.i.isActiveCellStyleEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "responsiveStates", {
        /**
         * A set of states that can be applied to the columns of the grid based on available space.
        */
        get: function () {
            if (this._responsiveStates === null) {
                var coll = new IgrResponsiveStatesCollection();
                var innerColl = this.i.responsiveStates;
                if (!innerColl) {
                    innerColl = new ResponsiveStatesCollection_internal();
                }
                this._responsiveStates = coll._fromInner(innerColl);
            }
            return this._responsiveStates;
        },
        set: function (v) {
            if (this._responsiveStates !== null) {
                this._responsiveStates._setSyncTarget(null);
                this._responsiveStates = null;
            }
            var coll = new IgrResponsiveStatesCollection();
            this._responsiveStates = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(ResponsiveState.$type);
            var innerColl = this.i.responsiveStates;
            if (!innerColl) {
                innerColl = new ResponsiveStatesCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._responsiveStates._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualVisibleRegion", {
        /**
         * Gets the region of the grid that is visible.
        */
        get: function () {
            return fromRect(this.i.actualVisibleRegion);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "initialSortDescriptions", {
        /**
         * Gets the current sort that is applied to the grid. Collection can be updated to modify the sort for the grid. Once sort descriptions are in this collection, the grid will no longer listen for changes on their properties.
        */
        get: function () {
            var r = this.i.initialSortDescriptions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrColumnSortDescriptionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "initialGroupDescriptions", {
        /**
         * Gets the current sort that is applied to the grid. Collection can be updated to modify the sort for the grid. Once sort descriptions are in this collection, the grid will no longer listen for changes on their properties.
        */
        get: function () {
            var r = this.i.initialGroupDescriptions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrColumnGroupDescriptionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "initialSummaryDescriptions", {
        /**
         * Gets the current summaries that are applied to the grid.
        */
        get: function () {
            var r = this.i.initialSummaryDescriptions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrColumnSummaryDescriptionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "initialSorts", {
        get: function () {
            return this.i.initialSorts;
        },
        set: function (v) {
            this.i.initialSorts = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "initialGroups", {
        get: function () {
            return this.i.initialGroups;
        },
        set: function (v) {
            this.i.initialGroups = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "initialSummaries", {
        get: function () {
            return this.i.initialSummaries;
        },
        set: function (v) {
            this.i.initialSummaries = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sortDescriptions", {
        /**
         * Gets the current sort that is applied to the grid. Collection can be updated to modify the sort for the grid. Once sort descriptions are in this collection, the grid will no longer listen for changes on their properties.
        */
        get: function () {
            var r = this.i.sortDescriptions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrColumnSortDescriptionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "groupDescriptions", {
        /**
         * Gets the current grouping that is applied to the grid. Collection can be updated to modify the grouping for the grid. Once grouping descriptions are in this collection, the grid will no longer listen for changes on their properties.
        */
        get: function () {
            var r = this.i.groupDescriptions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrColumnGroupDescriptionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "filterExpressions", {
        /**
         * Gets the current filter that is applied to the grid. Collection can be updated to modify the filter for the grid. Once filter expresisons are in this collection, the grid will no longer listen for changes on their properties.
        */
        get: function () {
            var r = this.i.filterExpressions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrFilterExpressionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryDescriptions", {
        /**
         * Gets the current summaries that are applied to the grid.
        */
        get: function () {
            var r = this.i.summaryDescriptions;
            if (r == null) {
                return null;
            }
            if (!r.externalObject) {
                var e = new IgrColumnSummaryDescriptionCollection();
                if (r.$type) {
                    e._implementation = r;
                }
                else {
                    if (e.i.setNativeElement) {
                        e.i.setNativeElement(r);
                    }
                }
                r.externalObject = e;
            }
            return r.externalObject;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryScope", {
        /**
         * Gets or sets the scope which summaries are calculated for.
        */
        get: function () {
            return this.i.summaryScope;
        },
        set: function (v) {
            this.i.summaryScope = ensureEnum(SummaryScope_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isGroupCollapsable", {
        /**
         * Gets or sets whether group headers are collapsable.
        */
        get: function () {
            return this.i.isGroupCollapsable;
        },
        set: function (v) {
            this.i.isGroupCollapsable = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "groupHeaderDisplayMode", {
        /**
         * Gets or sets how group headers are displayed when there are multiple groups defined in the grid.
        */
        get: function () {
            return this.i.groupHeaderDisplayMode;
        },
        set: function (v) {
            this.i.groupHeaderDisplayMode = ensureEnum(GroupHeaderDisplayMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isGroupExpandedDefault", {
        /**
         * Gets or sets whether groups are expanded or collapsed by default.
        */
        get: function () {
            return this.i.isGroupExpandedDefault;
        },
        set: function (v) {
            this.i.isGroupExpandedDefault = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "groupSummaryDisplayMode", {
        /**
         * Gets or sets the display mode summaries will use inside groups.
        */
        get: function () {
            return this.i.groupSummaryDisplayMode;
        },
        set: function (v) {
            this.i.groupSummaryDisplayMode = ensureEnum(GroupSummaryDisplayMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "autoAcceptEdits", {
        /**
         * Gets or sets whether to automatically accept edits or require explicit acceptance or rejections of edits
         * when handling the CellValueChanging or DataCommitting events.
         * When True, nothing is required on the part of the developer in order for edits to be accepted. In
         * order to validate and reject a user cell edit you must explicitly handle the CellValueChanging event
         * and call the RejectEdit method using the edit ID provided by the event. In order to reject a whole
         * commit you need to handle the DataComitting event and explicitly call the RejectCommit method using
         * the commit ID provided by the event.
         * When False, cell edits are not immediately accepted until you explicitly call the AcceptEdit method
         * using the edit ID provided by the CellValueChanging event. If you do not handle this event then edits
         * will be auto accepted.
        */
        get: function () {
            return this.i.autoAcceptEdits;
        },
        set: function (v) {
            this.i.autoAcceptEdits = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "primaryKey", {
        /**
         * Sets or gets the user provided primary key to assume for the data. Certain functionality of the grid requires a way to uniquely identify items in order to work correctly.
         * If a primary key cannot be inferred from the data source, you may need to provide one here.
        */
        get: function () {
            return this.i.primaryKey;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.primaryKey = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualPrimaryKey", {
        /**
         * Gets either the inferred primary key from the data source, or the user provided primary key, if present. Represents the actual primary key that the grid will use in operations that require it.
        */
        get: function () {
            return this.i.actualPrimaryKey;
        },
        set: function (v) {
            if (v && !Array.isArray(v) && typeof (v) == "string") {
                var re = /\s*(?:,|\s|$)\s*/gm;
                v = v.split(re);
            }
            this.i.actualPrimaryKey = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualColumns", {
        get: function () {
            if (this._actualColumns === null) {
                var coll = new IgrGridColumnCollection();
                var innerColl = this.i.actualColumns;
                if (!innerColl) {
                    innerColl = new GridColumnCollection_internal();
                }
                this._actualColumns = coll._fromInner(innerColl);
            }
            return this._actualColumns;
        },
        set: function (v) {
            if (this._actualColumns !== null) {
                this._actualColumns._setSyncTarget(null);
                this._actualColumns = null;
            }
            var coll = new IgrGridColumnCollection();
            this._actualColumns = coll._fromOuter(v);
            var syncColl = new SyncableObservableCollection$1(DataGridColumn.$type);
            var innerColl = this.i.actualColumns;
            if (!innerColl) {
                innerColl = new GridColumnCollection_internal();
            }
            syncColl._inner = innerColl;
            syncColl.clear();
            this._actualColumns._setSyncTarget(syncColl);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "reactsToSortChanges", {
        /**
         * Sets or gets whether the grid will react to sort changes.
        */
        get: function () {
            return this.i.reactsToSortChanges;
        },
        set: function (v) {
            this.i.reactsToSortChanges = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "reactsToGroupChanges", {
        /**
         * Sets or gets whether the grid will react to group changes.
        */
        get: function () {
            return this.i.reactsToGroupChanges;
        },
        set: function (v) {
            this.i.reactsToGroupChanges = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "reactsToFilterChanges", {
        /**
         * Sets or gets whether the grid will react to filter changes.
        */
        get: function () {
            return this.i.reactsToFilterChanges;
        },
        set: function (v) {
            this.i.reactsToFilterChanges = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "canUndo", {
        /**
         * Gets whether an undo can be performed.
        */
        get: function () {
            return this.i.canUndo;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "canRedo", {
        /**
         * Gets whether a redo can be performed.
        */
        get: function () {
            return this.i.canRedo;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "canCommit", {
        /**
         * Gets whether a commit can be performed. False if there are any errors present
         * on any pending transactions.
        */
        get: function () {
            return this.i.canCommit;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "enterBehavior", {
        /**
         * Gets or sets the behavior of the Enter key.
        */
        get: function () {
            return this.i.enterBehavior;
        },
        set: function (v) {
            this.i.enterBehavior = ensureEnum(EnterKeyBehaviors_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "enterBehaviorAfterEdit", {
        /**
         * Gets or sets the behavior of the enter key when exiting edit mode.
        */
        get: function () {
            return this.i.enterBehaviorAfterEdit;
        },
        set: function (v) {
            this.i.enterBehaviorAfterEdit = ensureEnum(EnterKeyBehaviorAfterEdit_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isColumnOptionsSummariesEnabled", {
        /**
         * Gets or sets whether to show the summaries option in the column options menu.
        */
        get: function () {
            return this.i.isColumnOptionsSummariesEnabled;
        },
        set: function (v) {
            this.i.isColumnOptionsSummariesEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isColumnOptionsGroupingEnabled", {
        /**
         * Gets or sets whether to show the grouping option in the column options menu.
        */
        get: function () {
            return this.i.isColumnOptionsGroupingEnabled;
        },
        set: function (v) {
            this.i.isColumnOptionsGroupingEnabled = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "mergedCellMode", {
        /**
         * Gets or sets if and how cell merging is performed for all fields.
        */
        get: function () {
            return this.i.mergedCellMode;
        },
        set: function (v) {
            this.i.mergedCellMode = ensureEnum(MergedCellMode_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "mergedCellEvaluationCriteria", {
        /**
         * Gets or sets how cells are evaluated for merging.
        */
        get: function () {
            return this.i.mergedCellEvaluationCriteria;
        },
        set: function (v) {
            this.i.mergedCellEvaluationCriteria = ensureEnum(MergedCellEvaluationCriteria_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "mergedCellVerticalAlignment", {
        /**
         * Gets or sets the vertical alignment to use for the merged cell content.
        */
        get: function () {
            return this.i.mergedCellVerticalAlignment;
        },
        set: function (v) {
            this.i.mergedCellVerticalAlignment = ensureEnum(CellContentVerticalAlignment_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "filterUIType", {
        /**
         * Gets or sets which filter UI type to use.
        */
        get: function () {
            return this.i.filterUIType;
        },
        set: function (v) {
            this.i.filterUIType = ensureEnum(FilterUIType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "filterLogicalOperator", {
        /**
         * Gets or sets how filters set through the filter UI are combined.
        */
        get: function () {
            return this.i.filterLogicalOperator;
        },
        set: function (v) {
            this.i.filterLogicalOperator = ensureEnum(FilterLogicalOperator_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "filterComparisonType", {
        /**
         * Gets or sets whether UI filters are case sensitive or not.
        */
        get: function () {
            return this.i.filterComparisonType;
        },
        set: function (v) {
            this.i.filterComparisonType = ensureEnum(FilterComparisonType_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "todayOverride", {
        get: function () {
            return this.i.todayOverride;
        },
        set: function (v) {
            this.i.todayOverride = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "clearSelectionOnEscape", {
        /**
         * Gets or sets whether selection is cleared when pressing the Escape key.
        */
        get: function () {
            return this.i.clearSelectionOnEscape;
        },
        set: function (v) {
            this.i.clearSelectionOnEscape = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "pageSize", {
        /**
         * Gets or sets the size of each page when the pager is visible.
        */
        get: function () {
            return this.i.pageSize;
        },
        set: function (v) {
            this.i.pageSize = +v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isToolbarColumnChooserVisible", {
        /**
         * Gets or sets whether to show the column chooser button in the toolbar.
        */
        get: function () {
            return this.i.isToolbarColumnChooserVisible;
        },
        set: function (v) {
            this.i.isToolbarColumnChooserVisible = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "isToolbarColumnPinningVisible", {
        /**
         * Gets or sets whether to show the column pinning button in the toolbar.
        */
        get: function () {
            return this.i.isToolbarColumnPinningVisible;
        },
        set: function (v) {
            this.i.isToolbarColumnPinningVisible = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "toolbarTitle", {
        /**
         * Gets or sets the title text to use in the toolbar.
        */
        get: function () {
            return this.i.toolbarTitle;
        },
        set: function (v) {
            this.i.toolbarTitle = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "toolbarColumnChooserText", {
        /**
         * Gets or sets the column chooser button text to use in the toolbar.
        */
        get: function () {
            return this.i.toolbarColumnChooserText;
        },
        set: function (v) {
            this.i.toolbarColumnChooserText = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "toolbarColumnChooserTitle", {
        /**
         * Gets or sets the column chooser title text to use in the toolbar.
        */
        get: function () {
            return this.i.toolbarColumnChooserTitle;
        },
        set: function (v) {
            this.i.toolbarColumnChooserTitle = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "toolbarColumnPinningText", {
        /**
         * Gets or sets the column pinning button text to use in the toolbar.
        */
        get: function () {
            return this.i.toolbarColumnPinningText;
        },
        set: function (v) {
            this.i.toolbarColumnPinningText = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "toolbarColumnPinningTitle", {
        /**
         * Gets or sets the column pinning title text to use in the toolbar.
        */
        get: function () {
            return this.i.toolbarColumnPinningTitle;
        },
        set: function (v) {
            this.i.toolbarColumnPinningTitle = v;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "scrollbarStyle", {
        /**
         * Gets or sets the style of scrollbar.
        */
        get: function () {
            return this.i.scrollbarStyle;
        },
        set: function (v) {
            this.i.scrollbarStyle = ensureEnum(ScrollbarStyle_$type, v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "scrollbarBackground", {
        /**
         * Gets or sets the scrollbar background color.
        */
        get: function () {
            return brushToString(this.i.scrollbarBackground);
        },
        set: function (v) {
            this.i.scrollbarBackground = stringToBrush(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "allowCopyOperation", {
        get: function () {
            return this.i.allowCopyOperation;
        },
        set: function (v) {
            this.i.allowCopyOperation = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "deferEventForRowDragSelection", {
        /**
         * Gets or sets whether to defer the SelectedItemsChanged and SelectedKeysChanged events till after the drag selection has completed.
        */
        get: function () {
            return this.i.deferEventForRowDragSelection;
        },
        set: function (v) {
            this.i.deferEventForRowDragSelection = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.findByName = function (name) {
        if (this.findEphemera) {
            if (name && name.indexOf("@@e:") == 0) {
                return this.findEphemera(name);
            }
        }
        if (this.sectionHeader && this.sectionHeader.name && this.sectionHeader.name == name) {
            return this.sectionHeader;
        }
        if (this.summaryRowRoot && this.summaryRowRoot.name && this.summaryRowRoot.name == name) {
            return this.summaryRowRoot;
        }
        if (this.summaryRowSection && this.summaryRowSection.name && this.summaryRowSection.name == name) {
            return this.summaryRowSection;
        }
        if (this.rowSeparator && this.rowSeparator.name && this.rowSeparator.name == name) {
            return this.rowSeparator;
        }
        if (this.headerRowSeparator && this.headerRowSeparator.name && this.headerRowSeparator.name == name) {
            return this.headerRowSeparator;
        }
        if (this.headerSeparator && this.headerSeparator.name && this.headerSeparator.name == name) {
            return this.headerSeparator;
        }
        if (this.columnResizingSeparator && this.columnResizingSeparator.name && this.columnResizingSeparator.name == name) {
            return this.columnResizingSeparator;
        }
        if (this.columnMovingSeparator && this.columnMovingSeparator.name && this.columnMovingSeparator.name == name) {
            return this.columnMovingSeparator;
        }
        if (this.pinnedAreaSeparator && this.pinnedAreaSeparator.name && this.pinnedAreaSeparator.name == name) {
            return this.pinnedAreaSeparator;
        }
        if (this.animationSettings && this.animationSettings.name && this.animationSettings.name == name) {
            return this.animationSettings;
        }
        if (this.selectedKeys != null && this.selectedKeys.findByName && this.selectedKeys.findByName(name)) {
            return this.selectedKeys.findByName(name);
        }
        if (this.selectedCells != null && this.selectedCells.findByName && this.selectedCells.findByName(name)) {
            return this.selectedCells.findByName(name);
        }
        if (this.selectedCellRanges != null && this.selectedCellRanges.findByName && this.selectedCellRanges.findByName(name)) {
            return this.selectedCellRanges.findByName(name);
        }
        if (this.pinnedKeys != null && this.pinnedKeys.findByName && this.pinnedKeys.findByName(name)) {
            return this.pinnedKeys.findByName(name);
        }
        if (this.activeCell && this.activeCell.name && this.activeCell.name == name) {
            return this.activeCell;
        }
        if (this.responsiveStates != null && this.responsiveStates.findByName && this.responsiveStates.findByName(name)) {
            return this.responsiveStates.findByName(name);
        }
        if (this.initialSortDescriptions != null && this.initialSortDescriptions.findByName && this.initialSortDescriptions.findByName(name)) {
            return this.initialSortDescriptions.findByName(name);
        }
        if (this.initialGroupDescriptions != null && this.initialGroupDescriptions.findByName && this.initialGroupDescriptions.findByName(name)) {
            return this.initialGroupDescriptions.findByName(name);
        }
        if (this.initialSummaryDescriptions != null && this.initialSummaryDescriptions.findByName && this.initialSummaryDescriptions.findByName(name)) {
            return this.initialSummaryDescriptions.findByName(name);
        }
        if (this.sortDescriptions != null && this.sortDescriptions.findByName && this.sortDescriptions.findByName(name)) {
            return this.sortDescriptions.findByName(name);
        }
        if (this.groupDescriptions != null && this.groupDescriptions.findByName && this.groupDescriptions.findByName(name)) {
            return this.groupDescriptions.findByName(name);
        }
        if (this.filterExpressions != null && this.filterExpressions.findByName && this.filterExpressions.findByName(name)) {
            return this.filterExpressions.findByName(name);
        }
        if (this.summaryDescriptions != null && this.summaryDescriptions.findByName && this.summaryDescriptions.findByName(name)) {
            return this.summaryDescriptions.findByName(name);
        }
        if (this.actualColumns != null && this.actualColumns.findByName && this.actualColumns.findByName(name)) {
            return this.actualColumns.findByName(name);
        }
        if (this.columns != null && this.columns.findByName && this.columns.findByName(name)) {
            return this.columns.findByName(name);
        }
        return null;
    };
    Object.defineProperty(IgrDataGrid.prototype, "hasUserValues", {
        get: function () {
            return this._hasUserValues;
        },
        enumerable: false,
        configurable: true
    });
    IgrDataGrid.prototype.__m = function (propertyName) {
        if (!this._inStyling) {
            this._hasUserValues.add(propertyName);
        }
    };
    IgrDataGrid.prototype._styling = function (container, component, parent) {
        if (this._inStyling) {
            return;
        }
        this._inStyling = true;
        this._stylingContainer = container;
        this._stylingParent = component;
        var genericPrefix = "";
        var typeName = this.i.$type.name;
        if (typeName.indexOf("Xam") === 0) {
            typeName = typeName.substring(3);
        }
        genericPrefix = toSpinal("DataGrid");
        var additionalPrefixes = [];
        var prefix = toSpinal(typeName);
        additionalPrefixes.push(prefix + "-");
        var b = this.i.$type.baseType;
        while (b && b.name != "Object" &&
            b.name != "Base" &&
            b.name != "Control" &&
            b.Name != "DependencyObject" &&
            b.Name != "FrameworkElement") {
            typeName = b.name;
            if (typeName.indexOf("Xam") === 0) {
                typeName = typeName.substring(3);
            }
            var basePrefix = toSpinal(typeName);
            additionalPrefixes.push(basePrefix + "-");
            b = b.baseType;
        }
        if (parent) {
            var parentTypeName = parent.i.$type.name;
            if (parentTypeName.indexOf("Xam") === 0) {
                parentTypeName = parentTypeName.substring(3);
            }
            var parentPrefix = toSpinal(parentTypeName);
            additionalPrefixes.push(parentPrefix + "-" + genericPrefix + "-");
            additionalPrefixes.push(parentPrefix + "-" + prefix + "-");
        }
        initializePropertiesFromCss(container, this, genericPrefix + "-", this.hasUserValues, false, additionalPrefixes);
        if (this.sectionHeader && this.sectionHeader._styling) {
            this.sectionHeader._styling(container, component, this);
        }
        if (this.summaryRowRoot && this.summaryRowRoot._styling) {
            this.summaryRowRoot._styling(container, component, this);
        }
        if (this.summaryRowSection && this.summaryRowSection._styling) {
            this.summaryRowSection._styling(container, component, this);
        }
        if (this.rowSeparator && this.rowSeparator._styling) {
            this.rowSeparator._styling(container, component, this);
        }
        if (this.headerRowSeparator && this.headerRowSeparator._styling) {
            this.headerRowSeparator._styling(container, component, this);
        }
        if (this.headerSeparator && this.headerSeparator._styling) {
            this.headerSeparator._styling(container, component, this);
        }
        if (this.columnResizingSeparator && this.columnResizingSeparator._styling) {
            this.columnResizingSeparator._styling(container, component, this);
        }
        if (this.columnMovingSeparator && this.columnMovingSeparator._styling) {
            this.columnMovingSeparator._styling(container, component, this);
        }
        if (this.pinnedAreaSeparator && this.pinnedAreaSeparator._styling) {
            this.pinnedAreaSeparator._styling(container, component, this);
        }
        if (this._otherStyling) {
            this._otherStyling(container, component, parent);
        }
        this._inStyling = false;
    };
    /**
 * Forces a refresh of the grid content.

*/
    IgrDataGrid.prototype.refresh = function () {
        this.i.refresh();
    };
    /**
     * Makes sure pending work has completed if the grid need to be synchronously examined.
    
    */
    IgrDataGrid.prototype.flush = function () {
        this.i.flush();
    };
    IgrDataGrid.prototype.notifyScrollStart = function () {
        this.i.notifyScrollStart();
    };
    IgrDataGrid.prototype.notifyScrollStop = function () {
        this.i.notifyScrollStop();
    };
    IgrDataGrid.prototype.exchangeColumn = function (newColumn, oldColumn) {
        this.i.exchangeColumn((newColumn == null ? null : newColumn.i), (oldColumn == null ? null : oldColumn.i));
    };
    IgrDataGrid.prototype.pinColumn = function (column, position) {
        this.i.pinColumn((column == null ? null : column.i), (position == null ? null : position));
    };
    IgrDataGrid.prototype.moveColumn = function (oldIndex, newIndex) {
        this.i.moveColumn(oldIndex, newIndex);
    };
    /**
     * Moves a column to the left, if possible.
    
    * @param columnIndex  * The index of the column to move.
    */
    IgrDataGrid.prototype.moveColumnLeft = function (columnIndex) {
        this.i.moveColumnLeft(columnIndex);
    };
    /**
     * Moves a column to the right, if possible.
    
    * @param columnIndex  * The index of the column to move.
    */
    IgrDataGrid.prototype.moveColumnRight = function (columnIndex) {
        this.i.moveColumnRight(columnIndex);
    };
    /**
     * Returns true if a column can be moved to the left of it's current position; otherwise false.
    
    * @param columnIndex  * The index of the column.
    */
    IgrDataGrid.prototype.canMoveColumnLeft = function (columnIndex) {
        var iv = this.i.canMoveColumnLeft(columnIndex);
        return (iv);
    };
    /**
     * Returns true if a column can be moved to the right of it's current position; otherwise false.
    
    * @param columnIndex  * The index of the column.
    */
    IgrDataGrid.prototype.canMoveColumnRight = function (columnIndex) {
        var iv = this.i.canMoveColumnRight(columnIndex);
        return (iv);
    };
    /**
     * Exports visual information about the current state of the grid.
    
    */
    IgrDataGrid.prototype.exportVisualModel = function () {
        var iv = this.i.exportVisualModel();
        return (iv);
    };
    /**
     * Returns a serialized copy of the exported visual model
    
    */
    IgrDataGrid.prototype.exportSerializedVisualModel = function () {
        var iv = this.i.exportSerializedVisualModel();
        return (iv);
    };
    /**
     * Scrolls the grid to given row, by index
    
    * @param rowNumber  * The row index to scroll to.
    */
    IgrDataGrid.prototype.scrollToRowByIndex = function (rowNumber) {
        this.i.scrollToRowByIndex(rowNumber);
    };
    /**
     * Scrolls the grid so that a row is the last visible, by index.
    
    * @param rowNumber  * The row index to scroll to.
    */
    IgrDataGrid.prototype.scrollToLastRowByIndex = function (rowNumber) {
        this.i.scrollToLastRowByIndex(rowNumber);
    };
    /**
     * Scrolls to an item, if found.
    
    * @param item  * The item to scroll to.
    */
    IgrDataGrid.prototype.scrollToItem = function (item) {
        var iv = this.i.scrollToItem(item);
        return (iv);
    };
    IgrDataGrid.prototype.scrollToPrimaryKey = function (key) {
        var iv = this.i.scrollToPrimaryKey(key);
        return (iv);
    };
    /**
     * Scrolls the grid to given column, by index
    
    * @param columnNumber  * The column number to scroll to.
    */
    IgrDataGrid.prototype.scrollToColumnByIndex = function (columnNumber) {
        this.i.scrollToColumnByIndex(columnNumber);
    };
    /**
     * Gets the last visible index in the grid.
    
    */
    IgrDataGrid.prototype.getLastVisibleIndex = function () {
        var iv = this.i.getLastVisibleIndex();
        return (iv);
    };
    /**
     * Gets the first visible index in the grid.
    
    */
    IgrDataGrid.prototype.getFirstVisibleIndex = function () {
        var iv = this.i.getFirstVisibleIndex();
        return (iv);
    };
    /**
     * Invalidates the bound data for the rows currently visible.
    
    */
    IgrDataGrid.prototype.invalidateVisibleRows = function () {
        this.i.invalidateVisibleRows();
    };
    /**
     * Manually set the active responsive state of the grid.
    
    * @param name
    */
    IgrDataGrid.prototype.setActiveResponsiveState = function (name) {
        this.i.setActiveResponsiveState(name);
    };
    IgrDataGrid.prototype.notifySetItem = function (index, oldItem, newItem) {
        this.i.notifySetItem(index, oldItem, newItem);
    };
    /**
     * Manually notifies the grid's data source that the data it has bound to has been cleared and needs to be re-examined.
     * This should not be called if the data that the grid is bound to is already observable.
    
    */
    IgrDataGrid.prototype.notifyClearItems = function () {
        this.i.notifyClearItems();
    };
    IgrDataGrid.prototype.notifyInsertItem = function (index, newItem) {
        this.i.notifyInsertItem(index, newItem);
    };
    IgrDataGrid.prototype.notifyRemoveItem = function (index, oldItem) {
        this.i.notifyRemoveItem(index, oldItem);
    };
    /**
     * Returns the data index of an item within the bound data source.
    
    * @param item  * The item from which to get the index.
    */
    IgrDataGrid.prototype.dataIndexOfItem = function (item) {
        var iv = this.i.dataIndexOfItem(item);
        return (iv);
    };
    IgrDataGrid.prototype.dataIndexOfPrimaryKey = function (key) {
        var iv = this.i.dataIndexOfPrimaryKey(key);
        return (iv);
    };
    /**
     * Resolves the value of a specific cell.
    
    * @param cellKey  * The cell to resolve.
    */
    IgrDataGrid.prototype.resolveCellValue = function (cellKey) {
        var iv = this.i.resolveCellValue((cellKey == null ? null : cellKey.i));
        return (iv);
    };
    IgrDataGrid.prototype.resolveCellValueFromPosition = function (row, column) {
        var iv = this.i.resolveCellValueFromPosition(row, column);
        return (iv);
    };
    /**
     * Gets the column that appears at the index specified. This is not the columns actual index in the
     * column's collection but the index for how it appears visually in the grid.
    
    * @param index  * The rendered index of the column.
    */
    IgrDataGrid.prototype.getColumnAtRenderedIndex = function (index) {
        var iv = this.i.getColumnAtRenderedIndex(index);
        var ret = null;
        if (iv && iv.externalObject) {
            ret = iv.externalObject;
        }
        else {
            if (iv) {
                var e = IgrDataGridColumn._createFromInternal(iv);
                e._implementation = iv;
                iv.externalObject = e;
                ret = e;
            }
        }
        return ret;
    };
    /**
     * Gets the summary results for root level.
    
    */
    IgrDataGrid.prototype.getRootSummaryResults = function () {
        var iv = this.i.getRootSummaryResults();
        return (iv);
    };
    /**
     * Gets the summary results for a specific section.
    
    */
    IgrDataGrid.prototype.getSectionSummaryResults = function (sectionIndex) {
        var iv = this.i.getSectionSummaryResults(sectionIndex);
        return (iv);
    };
    /**
     * Commits any edits that may exist in the datasource.
    
    */
    IgrDataGrid.prototype.commitEdits = function () {
        this.i.commitEdits();
    };
    /**
     * Cancels any edits that may exist in the datasource.
    
    */
    IgrDataGrid.prototype.cancelEdits = function () {
        this.i.cancelEdits();
    };
    /**
     * Accepts a specific commit to the datasource.
    
    * @param commitID  * The ID of the commit provided by the Committing event.
    */
    IgrDataGrid.prototype.acceptCommit = function (commitID) {
        this.i.acceptCommit(commitID);
    };
    /**
     * Rejects a specific commit.
    
    * @param commitID  * The ID of the commit provided by the Committing event.
    */
    IgrDataGrid.prototype.rejectCommit = function (commitID) {
        this.i.rejectCommit(commitID);
    };
    /**
     * Undo the last edit.
    
    */
    IgrDataGrid.prototype.undo = function () {
        this.i.undo();
    };
    /**
     * Redo the last edit.
    
    */
    IgrDataGrid.prototype.redo = function () {
        this.i.redo();
    };
    IgrDataGrid.prototype.updatePropertyAtKey = function (key, propertyPath, value) {
        this.i.updatePropertyAtKey(key, propertyPath, value);
    };
    IgrDataGrid.prototype.removeItemByKey = function (key) {
        this.i.removeItemByKey(key);
    };
    /**
     * Removes an item by its instance.
    
    * @param item  * The item instance to remove.
    */
    IgrDataGrid.prototype.removeItem = function (item) {
        this.i.removeItem(item);
    };
    /**
     * Accept a pending edit turning it into a real edit.
    
    * @param editID  * The ID of the edit. Provided by the CellValueChanging event.
    */
    IgrDataGrid.prototype.acceptEdit = function (editID) {
        this.i.acceptEdit(editID);
    };
    /**
     * Reject a pending edit.
    
    * @param editID  * The ID of the edit. Provided by the CellValueChanging event.
    */
    IgrDataGrid.prototype.rejectEdit = function (editID) {
        this.i.rejectEdit(editID);
    };
    IgrDataGrid.prototype.setEditError = function (editID, errorMessage) {
        this.i.setEditError(editID, errorMessage);
    };
    /**
     * Start edit mode on the active cell.
    
    */
    IgrDataGrid.prototype.startEditMode = function () {
        this.i.startEditMode();
    };
    IgrDataGrid.prototype.endEditMode = function (commit) {
        this.i.endEditMode(commit);
    };
    /**
     * Selects all of the rows in the grid.
    
    */
    IgrDataGrid.prototype.selectAllRows = function () {
        this.i.selectAllRows();
    };
    /**
     * Deselects all currently selected rows.
    
    */
    IgrDataGrid.prototype.deselectAllRows = function () {
        this.i.deselectAllRows();
    };
    /**
     * Saves the layout chnages that have been made to the grid
    
    */
    IgrDataGrid.prototype.saveLayout = function () {
        var iv = this.i.saveLayout();
        return (iv);
    };
    /**
     * Loads the layout chnages that have been made to the grid
    
    */
    IgrDataGrid.prototype.loadLayout = function (json) {
        this.i.loadLayout(json);
    };
    Object.defineProperty(IgrDataGrid.prototype, "filterExpressionsChanging", {
        get: function () {
            return this._filterExpressionsChanging;
        },
        set: function (ev) {
            var _this = this;
            if (this._filterExpressionsChanging_wrapped !== null) {
                this.i.filterExpressionsChanging = delegateRemove(this.i.filterExpressionsChanging, this._filterExpressionsChanging_wrapped);
                this._filterExpressionsChanging_wrapped = null;
                this._filterExpressionsChanging = null;
            }
            this._filterExpressionsChanging = ev;
            this._filterExpressionsChanging_wrapped = function (o, e) {
                var outerArgs = new IgrGridFilterExpressionsEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeFilterExpressionsChanging) {
                    _this.beforeFilterExpressionsChanging(_this, outerArgs);
                }
                if (_this._filterExpressionsChanging) {
                    _this._filterExpressionsChanging(_this, outerArgs);
                }
            };
            this.i.filterExpressionsChanging = delegateCombine(this.i.filterExpressionsChanging, this._filterExpressionsChanging_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "filterExpressionsChanged", {
        get: function () {
            return this._filterExpressionsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._filterExpressionsChanged_wrapped !== null) {
                this.i.filterExpressionsChanged = delegateRemove(this.i.filterExpressionsChanged, this._filterExpressionsChanged_wrapped);
                this._filterExpressionsChanged_wrapped = null;
                this._filterExpressionsChanged = null;
            }
            this._filterExpressionsChanged = ev;
            this._filterExpressionsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridFilterExpressionsEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeFilterExpressionsChanged) {
                    _this.beforeFilterExpressionsChanged(_this, outerArgs);
                }
                if (_this._filterExpressionsChanged) {
                    _this._filterExpressionsChanged(_this, outerArgs);
                }
            };
            this.i.filterExpressionsChanged = delegateCombine(this.i.filterExpressionsChanged, this._filterExpressionsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellPreviewPointerDown", {
        /**
         * Previews that a pointer is down on a cell.
        */
        get: function () {
            return this._cellPreviewPointerDown;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellPreviewPointerDown_wrapped !== null) {
                this.i.cellPreviewPointerDown = delegateRemove(this.i.cellPreviewPointerDown, this._cellPreviewPointerDown_wrapped);
                this._cellPreviewPointerDown_wrapped = null;
                this._cellPreviewPointerDown = null;
            }
            this._cellPreviewPointerDown = ev;
            this._cellPreviewPointerDown_wrapped = function (o, e) {
                var outerArgs = new IgrDataGridCellEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellPreviewPointerDown) {
                    _this.beforeCellPreviewPointerDown(_this, outerArgs);
                }
                if (_this._cellPreviewPointerDown) {
                    _this._cellPreviewPointerDown(_this, outerArgs);
                }
            };
            this.i.cellPreviewPointerDown = delegateCombine(this.i.cellPreviewPointerDown, this._cellPreviewPointerDown_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellPreviewPointerUp", {
        /**
         * Previews that a pointer is up on a cell.
        */
        get: function () {
            return this._cellPreviewPointerUp;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellPreviewPointerUp_wrapped !== null) {
                this.i.cellPreviewPointerUp = delegateRemove(this.i.cellPreviewPointerUp, this._cellPreviewPointerUp_wrapped);
                this._cellPreviewPointerUp_wrapped = null;
                this._cellPreviewPointerUp = null;
            }
            this._cellPreviewPointerUp = ev;
            this._cellPreviewPointerUp_wrapped = function (o, e) {
                var outerArgs = new IgrDataGridCellEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellPreviewPointerUp) {
                    _this.beforeCellPreviewPointerUp(_this, outerArgs);
                }
                if (_this._cellPreviewPointerUp) {
                    _this._cellPreviewPointerUp(_this, outerArgs);
                }
            };
            this.i.cellPreviewPointerUp = delegateCombine(this.i.cellPreviewPointerUp, this._cellPreviewPointerUp_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellPointerDown", {
        /**
         * Indicates a pointer is down on a cell.
        */
        get: function () {
            return this._cellPointerDown;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellPointerDown_wrapped !== null) {
                this.i.cellPointerDown = delegateRemove(this.i.cellPointerDown, this._cellPointerDown_wrapped);
                this._cellPointerDown_wrapped = null;
                this._cellPointerDown = null;
            }
            this._cellPointerDown = ev;
            this._cellPointerDown_wrapped = function (o, e) {
                var outerArgs = new IgrDataGridCellEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellPointerDown) {
                    _this.beforeCellPointerDown(_this, outerArgs);
                }
                if (_this._cellPointerDown) {
                    _this._cellPointerDown(_this, outerArgs);
                }
            };
            this.i.cellPointerDown = delegateCombine(this.i.cellPointerDown, this._cellPointerDown_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellPointerUp", {
        /**
         * Indicates a pointer is up on a cell.
        */
        get: function () {
            return this._cellPointerUp;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellPointerUp_wrapped !== null) {
                this.i.cellPointerUp = delegateRemove(this.i.cellPointerUp, this._cellPointerUp_wrapped);
                this._cellPointerUp_wrapped = null;
                this._cellPointerUp = null;
            }
            this._cellPointerUp = ev;
            this._cellPointerUp_wrapped = function (o, e) {
                var outerArgs = new IgrDataGridCellEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellPointerUp) {
                    _this.beforeCellPointerUp(_this, outerArgs);
                }
                if (_this._cellPointerUp) {
                    _this._cellPointerUp(_this, outerArgs);
                }
            };
            this.i.cellPointerUp = delegateCombine(this.i.cellPointerUp, this._cellPointerUp_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellClicked", {
        /**
         * Called when a cell is clicked.
        */
        get: function () {
            return this._cellClicked;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellClicked_wrapped !== null) {
                this.i.cellClicked = delegateRemove(this.i.cellClicked, this._cellClicked_wrapped);
                this._cellClicked_wrapped = null;
                this._cellClicked = null;
            }
            this._cellClicked = ev;
            this._cellClicked_wrapped = function (o, e) {
                var outerArgs = new IgrDataGridCellEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellClicked) {
                    _this.beforeCellClicked(_this, outerArgs);
                }
                if (_this._cellClicked) {
                    _this._cellClicked(_this, outerArgs);
                }
            };
            this.i.cellClicked = delegateCombine(this.i.cellClicked, this._cellClicked_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sortDescriptionsChanged", {
        /**
         * Called when sorting has changed.
        */
        get: function () {
            return this._sortDescriptionsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._sortDescriptionsChanged_wrapped !== null) {
                this.i.sortDescriptionsChanged = delegateRemove(this.i.sortDescriptionsChanged, this._sortDescriptionsChanged_wrapped);
                this._sortDescriptionsChanged_wrapped = null;
                this._sortDescriptionsChanged = null;
            }
            this._sortDescriptionsChanged = ev;
            this._sortDescriptionsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSortDescriptionsChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSortDescriptionsChanged) {
                    _this.beforeSortDescriptionsChanged(_this, outerArgs);
                }
                if (_this._sortDescriptionsChanged) {
                    _this._sortDescriptionsChanged(_this, outerArgs);
                }
            };
            this.i.sortDescriptionsChanged = delegateCombine(this.i.sortDescriptionsChanged, this._sortDescriptionsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "groupDescriptionsChanged", {
        /**
         * Called when grouping has changed.
        */
        get: function () {
            return this._groupDescriptionsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._groupDescriptionsChanged_wrapped !== null) {
                this.i.groupDescriptionsChanged = delegateRemove(this.i.groupDescriptionsChanged, this._groupDescriptionsChanged_wrapped);
                this._groupDescriptionsChanged_wrapped = null;
                this._groupDescriptionsChanged = null;
            }
            this._groupDescriptionsChanged = ev;
            this._groupDescriptionsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridGroupDescriptionsChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeGroupDescriptionsChanged) {
                    _this.beforeGroupDescriptionsChanged(_this, outerArgs);
                }
                if (_this._groupDescriptionsChanged) {
                    _this._groupDescriptionsChanged(_this, outerArgs);
                }
            };
            this.i.groupDescriptionsChanged = delegateCombine(this.i.groupDescriptionsChanged, this._groupDescriptionsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "summaryDescriptionsChanged", {
        /**
         * Called when summaries have changed.
        */
        get: function () {
            return this._summaryDescriptionsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._summaryDescriptionsChanged_wrapped !== null) {
                this.i.summaryDescriptionsChanged = delegateRemove(this.i.summaryDescriptionsChanged, this._summaryDescriptionsChanged_wrapped);
                this._summaryDescriptionsChanged_wrapped = null;
                this._summaryDescriptionsChanged = null;
            }
            this._summaryDescriptionsChanged = ev;
            this._summaryDescriptionsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSummaryDescriptionsChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSummaryDescriptionsChanged) {
                    _this.beforeSummaryDescriptionsChanged(_this, outerArgs);
                }
                if (_this._summaryDescriptionsChanged) {
                    _this._summaryDescriptionsChanged(_this, outerArgs);
                }
            };
            this.i.summaryDescriptionsChanged = delegateCombine(this.i.summaryDescriptionsChanged, this._summaryDescriptionsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnHiddenChanged", {
        /**
         * Called when a column is hidden or unhidden.
        */
        get: function () {
            return this._columnHiddenChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._columnHiddenChanged_wrapped !== null) {
                this.i.columnHiddenChanged = delegateRemove(this.i.columnHiddenChanged, this._columnHiddenChanged_wrapped);
                this._columnHiddenChanged_wrapped = null;
                this._columnHiddenChanged = null;
            }
            this._columnHiddenChanged = ev;
            this._columnHiddenChanged_wrapped = function (o, e) {
                var outerArgs = new IgrColumnHiddenChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeColumnHiddenChanged) {
                    _this.beforeColumnHiddenChanged(_this, outerArgs);
                }
                if (_this._columnHiddenChanged) {
                    _this._columnHiddenChanged(_this, outerArgs);
                }
            };
            this.i.columnHiddenChanged = delegateCombine(this.i.columnHiddenChanged, this._columnHiddenChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnPinnedChanged", {
        /**
         * Called when a column is pinned or unpinned.
        */
        get: function () {
            return this._columnPinnedChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._columnPinnedChanged_wrapped !== null) {
                this.i.columnPinnedChanged = delegateRemove(this.i.columnPinnedChanged, this._columnPinnedChanged_wrapped);
                this._columnPinnedChanged_wrapped = null;
                this._columnPinnedChanged = null;
            }
            this._columnPinnedChanged = ev;
            this._columnPinnedChanged_wrapped = function (o, e) {
                var outerArgs = new IgrColumnPinnedChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeColumnPinnedChanged) {
                    _this.beforeColumnPinnedChanged(_this, outerArgs);
                }
                if (_this._columnPinnedChanged) {
                    _this._columnPinnedChanged(_this, outerArgs);
                }
            };
            this.i.columnPinnedChanged = delegateCombine(this.i.columnPinnedChanged, this._columnPinnedChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellValueChanging", {
        /**
         * Called when a cell has been edited.
        */
        get: function () {
            return this._cellValueChanging;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellValueChanging_wrapped !== null) {
                this.i.cellValueChanging = delegateRemove(this.i.cellValueChanging, this._cellValueChanging_wrapped);
                this._cellValueChanging_wrapped = null;
                this._cellValueChanging = null;
            }
            this._cellValueChanging = ev;
            this._cellValueChanging_wrapped = function (o, e) {
                var outerArgs = new IgrGridCellValueChangingEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellValueChanging) {
                    _this.beforeCellValueChanging(_this, outerArgs);
                }
                if (_this._cellValueChanging) {
                    _this._cellValueChanging(_this, outerArgs);
                }
            };
            this.i.cellValueChanging = delegateCombine(this.i.cellValueChanging, this._cellValueChanging_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "dataCommitted", {
        /**
         * Called when edits have been committed to the datasource.
        */
        get: function () {
            return this._dataCommitted;
        },
        set: function (ev) {
            var _this = this;
            if (this._dataCommitted_wrapped !== null) {
                this.i.dataCommitted = delegateRemove(this.i.dataCommitted, this._dataCommitted_wrapped);
                this._dataCommitted_wrapped = null;
                this._dataCommitted = null;
            }
            this._dataCommitted = ev;
            this._dataCommitted_wrapped = function (o, e) {
                var outerArgs = new IgrGridDataCommittedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeDataCommitted) {
                    _this.beforeDataCommitted(_this, outerArgs);
                }
                if (_this._dataCommitted) {
                    _this._dataCommitted(_this, outerArgs);
                }
            };
            this.i.dataCommitted = delegateCombine(this.i.dataCommitted, this._dataCommitted_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "dataCommitting", {
        /**
         * Called when edits are about to be committed to the datasource.
        */
        get: function () {
            return this._dataCommitting;
        },
        set: function (ev) {
            var _this = this;
            if (this._dataCommitting_wrapped !== null) {
                this.i.dataCommitting = delegateRemove(this.i.dataCommitting, this._dataCommitting_wrapped);
                this._dataCommitting_wrapped = null;
                this._dataCommitting = null;
            }
            this._dataCommitting = ev;
            this._dataCommitting_wrapped = function (o, e) {
                var outerArgs = new IgrGridDataCommittingEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeDataCommitting) {
                    _this.beforeDataCommitting(_this, outerArgs);
                }
                if (_this._dataCommitting) {
                    _this._dataCommitting(_this, outerArgs);
                }
            };
            this.i.dataCommitting = delegateCombine(this.i.dataCommitting, this._dataCommitting_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rootSummariesChanged", {
        get: function () {
            return this._rootSummariesChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._rootSummariesChanged_wrapped !== null) {
                this.i.rootSummariesChanged = delegateRemove(this.i.rootSummariesChanged, this._rootSummariesChanged_wrapped);
                this._rootSummariesChanged_wrapped = null;
                this._rootSummariesChanged = null;
            }
            this._rootSummariesChanged = ev;
            this._rootSummariesChanged_wrapped = function (o, e) {
                var outerArgs = new IgrDataSourceRootSummariesChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeRootSummariesChanged) {
                    _this.beforeRootSummariesChanged(_this, outerArgs);
                }
                if (_this._rootSummariesChanged) {
                    _this._rootSummariesChanged(_this, outerArgs);
                }
            };
            this.i.rootSummariesChanged = delegateCombine(this.i.rootSummariesChanged, this._rootSummariesChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "sizeChanged", {
        /**
         * Called when the grids size has changed.
        */
        get: function () {
            return this._sizeChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._sizeChanged_wrapped !== null) {
                this.i.sizeChanged = delegateRemove(this.i.sizeChanged, this._sizeChanged_wrapped);
                this._sizeChanged_wrapped = null;
                this._sizeChanged = null;
            }
            this._sizeChanged = ev;
            this._sizeChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSizeChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSizeChanged) {
                    _this.beforeSizeChanged(_this, outerArgs);
                }
                if (_this._sizeChanged) {
                    _this._sizeChanged(_this, outerArgs);
                }
            };
            this.i.sizeChanged = delegateCombine(this.i.sizeChanged, this._sizeChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualColumnsChanged", {
        get: function () {
            return this._actualColumnsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._actualColumnsChanged_wrapped !== null) {
                this.i.actualColumnsChanged = delegateRemove(this.i.actualColumnsChanged, this._actualColumnsChanged_wrapped);
                this._actualColumnsChanged_wrapped = null;
                this._actualColumnsChanged = null;
            }
            this._actualColumnsChanged = ev;
            this._actualColumnsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridColumnsChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeActualColumnsChanged) {
                    _this.beforeActualColumnsChanged(_this, outerArgs);
                }
                if (_this._actualColumnsChanged) {
                    _this._actualColumnsChanged(_this, outerArgs);
                }
            };
            this.i.actualColumnsChanged = delegateCombine(this.i.actualColumnsChanged, this._actualColumnsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnsAutoGenerated", {
        /**
         * Called when the columns are autogenerated.
        */
        get: function () {
            return this._columnsAutoGenerated;
        },
        set: function (ev) {
            var _this = this;
            if (this._columnsAutoGenerated_wrapped !== null) {
                this.i.columnsAutoGenerated = delegateRemove(this.i.columnsAutoGenerated, this._columnsAutoGenerated_wrapped);
                this._columnsAutoGenerated_wrapped = null;
                this._columnsAutoGenerated = null;
            }
            this._columnsAutoGenerated = ev;
            this._columnsAutoGenerated_wrapped = function (o, e) {
                var outerArgs = new IgrGridColumnsAutoGeneratedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeColumnsAutoGenerated) {
                    _this.beforeColumnsAutoGenerated(_this, outerArgs);
                }
                if (_this._columnsAutoGenerated) {
                    _this._columnsAutoGenerated(_this, outerArgs);
                }
            };
            this.i.columnsAutoGenerated = delegateCombine(this.i.columnsAutoGenerated, this._columnsAutoGenerated_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedItemsChanged", {
        /**
         * Called when the selected items change.
        */
        get: function () {
            return this._selectedItemsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._selectedItemsChanged_wrapped !== null) {
                this.i.selectedItemsChanged = delegateRemove(this.i.selectedItemsChanged, this._selectedItemsChanged_wrapped);
                this._selectedItemsChanged_wrapped = null;
                this._selectedItemsChanged = null;
            }
            this._selectedItemsChanged = ev;
            this._selectedItemsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSelectedItemsChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSelectedItemsChanged) {
                    _this.beforeSelectedItemsChanged(_this, outerArgs);
                }
                if (_this._selectedItemsChanged) {
                    _this._selectedItemsChanged(_this, outerArgs);
                }
            };
            this.i.selectedItemsChanged = delegateCombine(this.i.selectedItemsChanged, this._selectedItemsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedKeysChanged", {
        /**
         * Called when the selected keys change.
        */
        get: function () {
            return this._selectedKeysChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._selectedKeysChanged_wrapped !== null) {
                this.i.selectedKeysChanged = delegateRemove(this.i.selectedKeysChanged, this._selectedKeysChanged_wrapped);
                this._selectedKeysChanged_wrapped = null;
                this._selectedKeysChanged = null;
            }
            this._selectedKeysChanged = ev;
            this._selectedKeysChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSelectedKeysChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSelectedKeysChanged) {
                    _this.beforeSelectedKeysChanged(_this, outerArgs);
                }
                if (_this._selectedKeysChanged) {
                    _this._selectedKeysChanged(_this, outerArgs);
                }
            };
            this.i.selectedKeysChanged = delegateCombine(this.i.selectedKeysChanged, this._selectedKeysChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedCellsChanged", {
        /**
         * Called when the selected cells change.
        */
        get: function () {
            return this._selectedCellsChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._selectedCellsChanged_wrapped !== null) {
                this.i.selectedCellsChanged = delegateRemove(this.i.selectedCellsChanged, this._selectedCellsChanged_wrapped);
                this._selectedCellsChanged_wrapped = null;
                this._selectedCellsChanged = null;
            }
            this._selectedCellsChanged = ev;
            this._selectedCellsChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSelectedCellsChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSelectedCellsChanged) {
                    _this.beforeSelectedCellsChanged(_this, outerArgs);
                }
                if (_this._selectedCellsChanged) {
                    _this._selectedCellsChanged(_this, outerArgs);
                }
            };
            this.i.selectedCellsChanged = delegateCombine(this.i.selectedCellsChanged, this._selectedCellsChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectionChanged", {
        /**
         * Called when an individual selection operation has been made.
        */
        get: function () {
            return this._selectionChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._selectionChanged_wrapped !== null) {
                this.i.selectionChanged = delegateRemove(this.i.selectionChanged, this._selectionChanged_wrapped);
                this._selectionChanged_wrapped = null;
                this._selectionChanged = null;
            }
            this._selectionChanged = ev;
            this._selectionChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSelectionChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSelectionChanged) {
                    _this.beforeSelectionChanged(_this, outerArgs);
                }
                if (_this._selectionChanged) {
                    _this._selectionChanged(_this, outerArgs);
                }
            };
            this.i.selectionChanged = delegateCombine(this.i.selectionChanged, this._selectionChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "activeCellChanged", {
        /**
         * Called when the active cell changes.
        */
        get: function () {
            return this._activeCellChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._activeCellChanged_wrapped !== null) {
                this.i.activeCellChanged = delegateRemove(this.i.activeCellChanged, this._activeCellChanged_wrapped);
                this._activeCellChanged_wrapped = null;
                this._activeCellChanged = null;
            }
            this._activeCellChanged = ev;
            this._activeCellChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridActiveCellChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeActiveCellChanged) {
                    _this.beforeActiveCellChanged(_this, outerArgs);
                }
                if (_this._activeCellChanged) {
                    _this._activeCellChanged(_this, outerArgs);
                }
            };
            this.i.activeCellChanged = delegateCombine(this.i.activeCellChanged, this._activeCellChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "selectedCellRangesChanged", {
        /**
         * Called when the selected cell ranges changed.
        */
        get: function () {
            return this._selectedCellRangesChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._selectedCellRangesChanged_wrapped !== null) {
                this.i.selectedCellRangesChanged = delegateRemove(this.i.selectedCellRangesChanged, this._selectedCellRangesChanged_wrapped);
                this._selectedCellRangesChanged_wrapped = null;
                this._selectedCellRangesChanged = null;
            }
            this._selectedCellRangesChanged = ev;
            this._selectedCellRangesChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridSelectedCellRangesChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeSelectedCellRangesChanged) {
                    _this.beforeSelectedCellRangesChanged(_this, outerArgs);
                }
                if (_this._selectedCellRangesChanged) {
                    _this._selectedCellRangesChanged(_this, outerArgs);
                }
            };
            this.i.selectedCellRangesChanged = delegateCombine(this.i.selectedCellRangesChanged, this._selectedCellRangesChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "columnWidthChanged", {
        /**
         * Called when a column's Width property has changed.
        */
        get: function () {
            return this._columnWidthChanged;
        },
        set: function (ev) {
            var _this = this;
            if (this._columnWidthChanged_wrapped !== null) {
                this.i.columnWidthChanged = delegateRemove(this.i.columnWidthChanged, this._columnWidthChanged_wrapped);
                this._columnWidthChanged_wrapped = null;
                this._columnWidthChanged = null;
            }
            this._columnWidthChanged = ev;
            this._columnWidthChanged_wrapped = function (o, e) {
                var outerArgs = new IgrGridColumnWidthChangedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeColumnWidthChanged) {
                    _this.beforeColumnWidthChanged(_this, outerArgs);
                }
                if (_this._columnWidthChanged) {
                    _this._columnWidthChanged(_this, outerArgs);
                }
            };
            this.i.columnWidthChanged = delegateCombine(this.i.columnWidthChanged, this._columnWidthChanged_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellEditStarted", {
        /**
         * Called when a cell has started editing.
        */
        get: function () {
            return this._cellEditStarted;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellEditStarted_wrapped !== null) {
                this.i.cellEditStarted = delegateRemove(this.i.cellEditStarted, this._cellEditStarted_wrapped);
                this._cellEditStarted_wrapped = null;
                this._cellEditStarted = null;
            }
            this._cellEditStarted = ev;
            this._cellEditStarted_wrapped = function (o, e) {
                var outerArgs = new IgrGridCellEditStartedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellEditStarted) {
                    _this.beforeCellEditStarted(_this, outerArgs);
                }
                if (_this._cellEditStarted) {
                    _this._cellEditStarted(_this, outerArgs);
                }
            };
            this.i.cellEditStarted = delegateCombine(this.i.cellEditStarted, this._cellEditStarted_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "cellEditEnded", {
        /**
         * Called when a cell has finished editing.
        */
        get: function () {
            return this._cellEditEnded;
        },
        set: function (ev) {
            var _this = this;
            if (this._cellEditEnded_wrapped !== null) {
                this.i.cellEditEnded = delegateRemove(this.i.cellEditEnded, this._cellEditEnded_wrapped);
                this._cellEditEnded_wrapped = null;
                this._cellEditEnded = null;
            }
            this._cellEditEnded = ev;
            this._cellEditEnded_wrapped = function (o, e) {
                var outerArgs = new IgrGridCellEditEndedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCellEditEnded) {
                    _this.beforeCellEditEnded(_this, outerArgs);
                }
                if (_this._cellEditEnded) {
                    _this._cellEditEnded(_this, outerArgs);
                }
            };
            this.i.cellEditEnded = delegateCombine(this.i.cellEditEnded, this._cellEditEnded_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowEditStarted", {
        /**
         * Called when a row has started editing.
        */
        get: function () {
            return this._rowEditStarted;
        },
        set: function (ev) {
            var _this = this;
            if (this._rowEditStarted_wrapped !== null) {
                this.i.rowEditStarted = delegateRemove(this.i.rowEditStarted, this._rowEditStarted_wrapped);
                this._rowEditStarted_wrapped = null;
                this._rowEditStarted = null;
            }
            this._rowEditStarted = ev;
            this._rowEditStarted_wrapped = function (o, e) {
                var outerArgs = new IgrGridRowEditStartedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeRowEditStarted) {
                    _this.beforeRowEditStarted(_this, outerArgs);
                }
                if (_this._rowEditStarted) {
                    _this._rowEditStarted(_this, outerArgs);
                }
            };
            this.i.rowEditStarted = delegateCombine(this.i.rowEditStarted, this._rowEditStarted_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "rowEditEnded", {
        /**
         * Called when a row has finished editing.
        */
        get: function () {
            return this._rowEditEnded;
        },
        set: function (ev) {
            var _this = this;
            if (this._rowEditEnded_wrapped !== null) {
                this.i.rowEditEnded = delegateRemove(this.i.rowEditEnded, this._rowEditEnded_wrapped);
                this._rowEditEnded_wrapped = null;
                this._rowEditEnded = null;
            }
            this._rowEditEnded = ev;
            this._rowEditEnded_wrapped = function (o, e) {
                var outerArgs = new IgrGridRowEditEndedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeRowEditEnded) {
                    _this.beforeRowEditEnded(_this, outerArgs);
                }
                if (_this._rowEditEnded) {
                    _this._rowEditEnded(_this, outerArgs);
                }
            };
            this.i.rowEditEnded = delegateCombine(this.i.rowEditEnded, this._rowEditEnded_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "customFilterRequested", {
        get: function () {
            return this._customFilterRequested;
        },
        set: function (ev) {
            var _this = this;
            if (this._customFilterRequested_wrapped !== null) {
                this.i.customFilterRequested = delegateRemove(this.i.customFilterRequested, this._customFilterRequested_wrapped);
                this._customFilterRequested_wrapped = null;
                this._customFilterRequested = null;
            }
            this._customFilterRequested = ev;
            this._customFilterRequested_wrapped = function (o, e) {
                var outerArgs = new IgrGridCustomFilterRequestedEventArgs();
                outerArgs._provideImplementation(e);
                if (_this.beforeCustomFilterRequested) {
                    _this.beforeCustomFilterRequested(_this, outerArgs);
                }
                if (_this._customFilterRequested) {
                    _this._customFilterRequested(_this, outerArgs);
                }
            };
            this.i.customFilterRequested = delegateCombine(this.i.customFilterRequested, this._customFilterRequested_wrapped);
            ;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IgrDataGrid.prototype, "actualPrimaryKeyChange", {
        get: function () {
            return this._actualPrimaryKeyChange;
        },
        set: function (ev) {
            var _this = this;
            if (this._actualPrimaryKeyChange_wrapped !== null) {
                this.i.propertyChanged = delegateRemove(this.i.propertyChanged, this._actualPrimaryKeyChange_wrapped);
                this._actualPrimaryKeyChange_wrapped = null;
                this._actualPrimaryKeyChange = null;
            }
            this._actualPrimaryKeyChange = ev;
            this._actualPrimaryKeyChange_wrapped = function (o, e) {
                var ext = _this.actualPrimaryKey;
                if (_this.beforeActualPrimaryKeyChange) {
                    _this.beforeActualPrimaryKeyChange(_this, ext);
                }
                if (_this._actualPrimaryKeyChange) {
                    _this._actualPrimaryKeyChange(_this, ext);
                }
            };
            this.i.propertyChanged = delegateCombine(this.i.propertyChanged, this._actualPrimaryKeyChange_wrapped);
        },
        enumerable: false,
        configurable: true
    });
    return IgrDataGrid;
}(React.Component));
export { IgrDataGrid };