@vlalg-nimbus/nb-gtm
Version:
Gtm for Vuejs 3
2 lines (1 loc) • 1.94 kB
JavaScript
(function(d,i){typeof exports=="object"&&typeof module<"u"?module.exports=i():typeof define=="function"&&define.amd?define(i):(d=typeof globalThis<"u"?globalThis:d||self,d.NbGtm=i())})(this,function(){"use strict";async function d(n,e,a,o,t,l,r){var s;n[o]=n[o]||[],n[o].push({"gtm.start":new Date().getTime(),event:"gtm.js"}),l=e.createElement(a),l.async=!0,l.src=`https://www.googletagmanager.com/gtm.js?id=${t}&l=${o}`,r=e.getElementsByTagName(a)[0],(s=r==null?void 0:r.parentNode)==null||s.insertBefore(l,r)}async function i(n,e,a="Some of the options passed are incorrect or invalid."){const o={array:t=>Array.isArray(t),null:t=>t===null,object:t=>t!==null&&typeof t=="object"&&!Array.isArray(t),string:t=>typeof t=="string",number:t=>typeof t=="number",boolean:t=>typeof t=="boolean",function:t=>typeof t=="function",undefined:t=>typeof t>"u"};if(!o[e]||!o[e](n))throw new Error(a)}async function m(n){if(!Array.isArray(n)||!n.every(e=>typeof e=="string"))throw new Error("If permitedDomains is set, it must be a string array.")}function y(n,e){return Object.prototype.hasOwnProperty.call(n,e)}return{async install(n,e={}){var r;if(typeof n>"u")throw new Error("Vue must be installed first!");if(!e||!e.googleKey)throw new Error("The Google key is required and is missing.");await i(e.dev,"boolean"),await i(e.googleKey,"string"),await i(e.permitedDomains,"array"),(r=e.permitedDomains)!=null&&r.length&&m(e.permitedDomains);const a=y(e,"dev")?e.dev:!1,o=y(e,"googleKey")?e.googleKey:"",t=y(e,"permitedDomains")?e.permitedDomains:[];!t.length||t.some(s=>s===window.location.hostname)?(await d(window,document,"script","dataLayer",o),window.dataLayer&&(n.provide("$gtag",window.dataLayer),n.provide("$gtagpush",(s={},c="click")=>{const g={event:c,...s};a&&console.log("[GTM]",g),window.dataLayer.push(g)}))):(n.provide("$gtag",[]),n.provide("$gtagpush",()=>(a&&console.warn("🛑 Domain not allowed for GTM"),"Domain not allowed")))}}});