@ninetailed/experience.js-plugin-google-tagmanager
Version:
Ninetailed SDK plugin for Google Tag Manager
50 lines • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NinetailedGoogleTagmanagerPlugin = void 0;
const tslib_1 = require("tslib");
const experience_js_plugin_analytics_1 = require("@ninetailed/experience.js-plugin-analytics");
const experience_js_shared_1 = require("@ninetailed/experience.js-shared");
const TEMPLATE_OPTIONS = {
interpolate: /{{([\s\S]+?)}}/g,
};
class NinetailedGoogleTagmanagerPlugin extends experience_js_plugin_analytics_1.NinetailedAnalyticsPlugin {
constructor(options = {}) {
super(Object.assign(Object.assign({}, options.template), { event: 'nt_experience', ninetailed_variant: '{{selectedVariantSelector}}', ninetailed_experience: '{{experience.id}}', ninetailed_experience_name: '{{experience.name}}', ninetailed_audience: '{{audience.id}}', ninetailed_component: '{{selectedVariant.id}}' }));
this.options = options;
this.name = 'ninetailed:googleTagmanager';
this.initialize = () => {
if (typeof window !== 'undefined') {
window.dataLayer = window.dataLayer || [];
}
};
}
onTrackExperience(properties, hasSeenExperienceEventPayload) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
(_a = window.dataLayer) === null || _a === void 0 ? void 0 : _a.push(hasSeenExperienceEventPayload);
});
}
onTrackComponent(properties) {
var _a;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const { variant, audience, isPersonalized } = properties;
const action = (0, experience_js_shared_1.template)(this.options.actionTemplate || 'Has Seen Experience', { component: variant, audience }, TEMPLATE_OPTIONS.interpolate);
const label = (0, experience_js_shared_1.template)(this.options.labelTemplate ||
'{{ baselineOrVariant }}:{{ component.id }}', {
component: variant,
audience,
baselineOrVariant: isPersonalized ? 'Variant' : 'Baseline',
}, TEMPLATE_OPTIONS.interpolate);
(_a = window.dataLayer) === null || _a === void 0 ? void 0 : _a.push({
event: action,
properties: {
category: 'Ninetailed',
label,
nonInteraction: true,
},
});
});
}
}
exports.NinetailedGoogleTagmanagerPlugin = NinetailedGoogleTagmanagerPlugin;
//# sourceMappingURL=NinetailedGoogleTagmanagerPlugin.js.map