deep-package-manager
Version:
DEEP Package Manager
76 lines (63 loc) • 1.88 kB
JavaScript
/**
* Created by AlexanderC on 2/11/16.
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GTMDriver = undefined;
var _AbstractDriver = require('./AbstractDriver');
var _InvalidGTMContainerIdException = require('./Exception/InvalidGTMContainerIdException');
class GTMDriver extends _AbstractDriver.AbstractDriver {
/**
* @param {String} containerId
*/
constructor(containerId) {
super();
this._containerId = containerId;
this._validateContainerId();
}
/**
* @private
*/
_validateContainerId() {
if (!/^GTM\-[A-Z0-9]+$/i.test(this._containerId)) {
throw new _InvalidGTMContainerIdException.InvalidGTMContainerIdException(this._containerId);
}
}
/**
* @returns {String}
*/
get containerId() {
return this._containerId;
}
/**
* @param {String} htmlContent
* @returns {String}
*/
inject(htmlContent) {
let scriptContent = GTMDriver.SCRIPT_TPL.replace(/\{containerId\}/g, this._containerId);
return this.replaceTags(htmlContent, GTMDriver.TAG_SUFFIX, scriptContent);
}
/**
* @returns {String}
*/
static get TAG_SUFFIX() {
return 'gtm';
}
/**
* @returns {String}
*/
static get SCRIPT_TPL() {
return `<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id={containerId}"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','{containerId}');</script>
<!-- End Google Tag Manager -->`;
}
}
exports.GTMDriver = GTMDriver;