import { __generator } from "tslib";
import { ensureBool } from "igniteui-angular-core";
import { IgxChartSortDescription } from "./igx-chart-sort-description";
import { ChartSortDescriptionCollection as ChartSortDescriptionCollection_internal } from "./ChartSortDescriptionCollection";
/**
 * Represents a collection of sort elements that are applied to a data source or provider.
*/
var IgxChartSortDescriptionCollection = /** @class */ /*@__PURE__*/ (function () {
    function IgxChartSortDescriptionCollection() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    IgxChartSortDescriptionCollection.prototype.createImplementation = function () {
        return new ChartSortDescriptionCollection_internal();
    };
    Object.defineProperty(IgxChartSortDescriptionCollection.prototype, "i", {
        get: function () {
            return this._implementation;
        },
        enumerable: false,
        configurable: true
    });
    IgxChartSortDescriptionCollection.prototype.onImplementationCreated = function () {
    };
    IgxChartSortDescriptionCollection.prototype._provideImplementation = function (i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    };
    IgxChartSortDescriptionCollection.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 IgxChartSortDescription();
                ext._implementation = int;
                int.externalObject = ext;
            }
        }
        return ext;
    };
    Object.defineProperty(IgxChartSortDescriptionCollection.prototype, "count", {
        get: function () {
            return this.i.size();
        },
        enumerable: false,
        configurable: true
    });
    IgxChartSortDescriptionCollection.prototype.toArray = function () {
        var arr = [];
        for (var i = 0; i < this.count; i++) {
            arr[i] = this.item(i);
        }
        return arr;
    };
    IgxChartSortDescriptionCollection.prototype[Symbol.iterator] = function () {
        var i, item;
        return __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*/];
            }
        });
    };
    Object.defineProperty(IgxChartSortDescriptionCollection.prototype, "shouldDetachOnTargetChange", {
        /**
     * Gets or sets whether this collection should detach the sync when the target collection changes.
    */
        get: function () {
            return this.i.i;
        },
        set: function (v) {
            this.i.i = ensureBool(v);
        },
        enumerable: false,
        configurable: true
    });
    IgxChartSortDescriptionCollection.prototype.findByName = function (name) {
        if (this.findEphemera) {
            if (name && name.indexOf("@@e:") == 0) {
                return this.findEphemera(name);
            }
        }
        return null;
    };
    IgxChartSortDescriptionCollection.prototype.add = function (item) {
        var iv = this.i.g((item == null ? null : item.i));
        return (iv);
    };
    IgxChartSortDescriptionCollection.prototype.insert = function (index, item) {
        this.i.o(index, (item == null ? null : item.i));
    };
    IgxChartSortDescriptionCollection.prototype.clear = function () {
        this.i.n();
    };
    IgxChartSortDescriptionCollection.prototype.indexOf = function (item) {
        var iv = this.i.k((item == null ? null : item.i));
        return (iv);
    };
    IgxChartSortDescriptionCollection.prototype.remove = function (item) {
        var iv = this.i.h((item == null ? null : item.i));
        return (iv);
    };
    IgxChartSortDescriptionCollection.prototype.removeAt = function (index) {
        var iv = this.i.b(index);
        var ret = null;
        if (iv && iv.externalObject) {
            ret = iv.externalObject;
        }
        else {
            if (iv) {
                var e = new IgxChartSortDescription();
                e._implementation = iv;
                iv.externalObject = e;
                ret = e;
            }
        }
        return ret;
    };
    return IgxChartSortDescriptionCollection;
}());
export { IgxChartSortDescriptionCollection };
