gtm-vue
Version:
Wrapper for using Google Tag Manager with Vue. Inspired by vue-gtm.
36 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var utils_1 = require("./utils");
var AnalyticsPlugin = /** @class */ (function () {
function AnalyticsPlugin(enabled, debug) {
if (enabled === void 0) { enabled = true; }
if (debug === void 0) { debug = false; }
this.enabled = enabled;
this.debug = debug;
this.inBrowser = typeof window !== 'undefined';
}
AnalyticsPlugin.prototype.trackView = function (screenName, path) {
if (typeof window !== 'undefined' && this.enabled) {
if (this.debug)
utils_1.logDebug('trackView', { screenName: screenName, path: path });
var dataLayer = utils_1.getDataLayer();
dataLayer.push({
'event': 'content-view',
'content-name': path,
});
}
};
AnalyticsPlugin.prototype.trackEvent = function (eventConfig) {
var event = eventConfig.event, category = eventConfig.category, action = eventConfig.action, label = eventConfig.label, value = eventConfig.value, noninteraction = eventConfig.noninteraction, rest = tslib_1.__rest(eventConfig, ["event", "category", "action", "label", "value", "noninteraction"]);
if (this.inBrowser && this.enabled) {
if (this.debug)
utils_1.logDebug('trackEvent', eventConfig);
var dataLayer = utils_1.getDataLayer();
dataLayer.push(tslib_1.__assign({ 'event': event || 'interaction', 'target': category, 'action': action, 'target-properties': label, 'value': value, 'interaction-type': noninteraction || false }, rest));
}
};
return AnalyticsPlugin;
}());
exports.AnalyticsPlugin = AnalyticsPlugin;
//# sourceMappingURL=plugin.js.map