import * as tslib_1 from "tslib";
import { IgcColumnGroupDescription } from "./igc-column-group-description";
import { ColumnGroupDescriptionCollection as ColumnGroupDescriptionCollection_internal } from "./ColumnGroupDescriptionCollection";
/**
 * Represents a collection of grouping elements that are applied to a data source or provider.
*/
var IgcColumnGroupDescriptionCollection = /** @class */ /*@__PURE__*/ (function () {
    function IgcColumnGroupDescriptionCollection() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    IgcColumnGroupDescriptionCollection.prototype.createImplementation = function () {
        return new ColumnGroupDescriptionCollection_internal();
    };
    Object.defineProperty(IgcColumnGroupDescriptionCollection.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: true,
        configurable: true
    });
    IgcColumnGroupDescriptionCollection.prototype.onImplementationCreated = function () {
    };
    IgcColumnGroupDescriptionCollection.prototype._provideImplementation = function (i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    };
    IgcColumnGroupDescriptionCollection.prototype.item = function (index, value) {
        var int = null;
        if (value !== undefined) {
            int = this.i.set(index, value == null ? null : value.i);
        }
        else {
            int = this.i.get(index);
        }
        var ext = null;
        if (int != null) {
            ext = int.externalObject;
            if (!ext) {
                ext = new IgcColumnGroupDescription();
                ext._implementation = int;
                int.externalObject = ext;
            }
        }
        return ext;
    };
    Object.defineProperty(IgcColumnGroupDescriptionCollection.prototype, "count", {
        get: function () {
            return this.i.size();
        },
        enumerable: true,
        configurable: true
    });
    IgcColumnGroupDescriptionCollection.prototype.toArray = function () {
        var arr = [];
        for (var i = 0; i < this.count; i++) {
            arr[i] = this.item(i);
        }
        return arr;
    };
    IgcColumnGroupDescriptionCollection.prototype[Symbol.iterator] = function () {
        var i, item;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    i = 0;
                    _a.label = 1;
                case 1:
                    if (!(i < this.count))
                        return [3 /*break*/, 4];
                    item = this.item(i);
                    if (item.externalObject) {
                        item = item.externalObject;
                    }
                    return [4 /*yield*/, item];
                case 2:
                    _a.sent();
                    _a.label = 3;
                case 3:
                    i++;
                    return [3 /*break*/, 1];
                case 4: return [2 /*return*/];
            }
        });
    };
    IgcColumnGroupDescriptionCollection.prototype.findByName = function (name) {
        return null;
    };
    IgcColumnGroupDescriptionCollection.prototype.add = function (item) {
        var iv = this.i.g((item == null ? null : item.i));
        return (iv);
    };
    IgcColumnGroupDescriptionCollection.prototype.insert = function (index, item) {
        this.i.n(index, (item == null ? null : item.i));
    };
    IgcColumnGroupDescriptionCollection.prototype.clear = function () {
        this.i.m();
    };
    IgcColumnGroupDescriptionCollection.prototype.indexOf = function (item) {
        var iv = this.i.j((item == null ? null : item.i));
        return (iv);
    };
    IgcColumnGroupDescriptionCollection.prototype.remove = function (item) {
        var iv = this.i.h((item == null ? null : item.i));
        return (iv);
    };
    IgcColumnGroupDescriptionCollection.prototype.removeAt = function (index) {
        var iv = this.i.d(index);
        return (iv == null ? null : iv.externalObject);
    };
    return IgcColumnGroupDescriptionCollection;
}());
export { IgcColumnGroupDescriptionCollection };
//# sourceMappingURL=igc-column-group-description-collection.js.map
