/// <reference path="./ITagInjector.ts" />
/// <reference path="../ITagDefinition.ts" />
/// <reference path="./HtmlTagInjector.ts" />
var econda;
(function (econda) {
    var tagmanager;
    (function (tagmanager) {
        var tag;
        (function (tag) {
            var injector;
            (function (injector) {
                /**
                 * Injects tags to dom document.
                 * @class econda.tagmanager.tag.injector.Injector
                 */
                var Injector = (function () {
                    function Injector() {
                        /**
                         * Array of loaded injectors
                         * @private
                         */
                        this._injectors = {};
                        this._injectors['html'] = new econda.tagmanager.tag.injector.HtmlTagInjector();
                    }
                    /**
                     * Inject tag to dom. Will use a specialized injector based on tag type and tag properties
                     * @param {Object} tagDefinition Tag definition
                     * @param {String} tagSourceCode Source with placeholders already replaces with real values
                     */
                    Injector.prototype.inject = function (tagDefinition, tagSourceCode) {
                        var tagType = 'html'; // hardcoded for now, ui does not support multiple tag types
                        if (typeof this._injectors[tagType] === 'undefined') {
                            throw "Unsupported tag type";
                        }
                        this._injectors[tagType].inject(tagDefinition, tagSourceCode);
                    };
                    return Injector;
                }());
                injector.Injector = Injector;
            })(injector = tag.injector || (tag.injector = {}));
        })(tag = tagmanager.tag || (tagmanager.tag = {}));
    })(tagmanager = econda.tagmanager || (econda.tagmanager = {}));
})(econda || (econda = {}));