/// <reference path="./Container.ts" /> /// <reference path="./tag/ITagDefinition.ts" /> /// <reference path="./macro/IMacroDefinition.ts" /> /// <reference path="../util/DomHelper.ts" /> var econda; (function (econda) { var tagmanager; (function (tagmanager) { var Container = econda.tagmanager.Container; var DomHelper = econda.util.DomHelper; /** * Tag Manager * * The following example shows a minimal browser implementation of the Tag Manager, with an empty data layer. * * <script type="text/javascript"> * var econdaData = {}; * </script> * * <div id="econdaTMC" style="display:none;visibility:hidden"></div> * <script id="econdaTM">econdaTMD=econdaData;econdatm={stored:[], * events:function(p){this.stored.push(p);}}; * (function(d,s){var f=d.getElementById(s),j=d.createElement('script'); * j.async=true;j.src='econda-tagmanager.js';f.parentNode.insertBefore(j,f);}) * (document,'econdaTM');</script> * * * @class econda.tagmanager.Runtime */ var Runtime = (function () { function Runtime() { } /** * Setup {@link econda.tagmanager.Container} with given configuration. * @static */ Runtime.start = function (dataLayer, tagDefinitions, macroDefinitions) { if (dataLayer instanceof Object) { if (!dataLayer['events']) { dataLayer['events'] = []; } } else { throw new Error('data layer is not of type object!'); } var container = new Container({ containerVarName: this.INSTANCE_NAME, dataLayer: dataLayer, events: dataLayer['events'], tagDefinitions: tagDefinitions, macroDefinitions: macroDefinitions }); DomHelper.documentReady(function () { container.executeDocumentReady(); container.init(); }); }; Runtime.INSTANCE_NAME = 'ecTagManager'; return Runtime; }()); tagmanager.Runtime = Runtime; })(tagmanager = econda.tagmanager || (econda.tagmanager = {})); })(econda || (econda = {}));