UNPKG

gtm-vue

Version:

Wrapper for using Google Tag Manager with Vue. Inspired by vue-gtm.

36 lines 1.81 kB
"use strict"; 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