/// <reference path="../../ITouchpoint.ts" />
/// <reference path="./IConstructorArgument.ts" />
/// <reference path="../../Store.ts" />
var econda;
(function (econda) {
    var tpm;
    (function (tpm) {
        var provisioning;
        (function (provisioning) {
            var partials;
            (function (partials) {
                /**
                 * Use only touchpoints from current session.
                 *
                 * @class econda.tpm.provisioning.partials.OnlyCurrentSession
                 */
                var WithTouchpoints = (function () {
                    function WithTouchpoints(data) {
                        this._touchpoints = data.touchpoints;
                    }
                    WithTouchpoints.prototype.apply = function (storeName) {
                        if (storeName === void 0) { storeName = 'default'; }
                        var touchpointStore = econda.tpm.Store.getInstance(storeName);
                        var allTouchpoints = touchpointStore.getAll();
                        for (var i = 0; i < allTouchpoints.length; i++) {
                            if (typeof allTouchpoints[i].ignore === 'undefined' || allTouchpoints[i].ignore == false) {
                                this._touchpoints.push(WithTouchpoints._copy(allTouchpoints[i]));
                            }
                        }
                    };
                    WithTouchpoints._copy = function (o) {
                        var cmp = this;
                        var out, v, key;
                        out = {};
                        for (key in o) {
                            v = o[key];
                            out[key] = (typeof v === "object" && v !== null) ? WithTouchpoints._copy(v) : v;
                        }
                        return out;
                    };
                    WithTouchpoints.FUNCTION_NAME = 'withTouchpoints';
                    return WithTouchpoints;
                }());
                partials.WithTouchpoints = WithTouchpoints;
            })(partials = provisioning.partials || (provisioning.partials = {}));
        })(provisioning = tpm.provisioning || (tpm.provisioning = {}));
    })(tpm = econda.tpm || (econda.tpm = {}));
})(econda || (econda = {}));