UNPKG

@ninetailed/experience.js-plugin-google-tagmanager

Version:
50 lines 2.57 kB
"use strict"; 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