{"version":3,"sources":["../src/types/index.ts","../src/index.ts"],"sourcesContent":["import type { Mapping } from '@elbwalker/types';\nimport type { DestinationWeb } from '@elbwalker/walker.js';\n\ndeclare global {\n  interface Window {\n    dataLayer: Array<unknown> | unknown;\n    gtag?: Gtag.Gtag;\n  }\n}\n\nexport interface Destination\n  extends DestinationWeb.Destination<Custom, CustomEvent> {}\n\nexport type Config = DestinationWeb.Config<Custom, CustomEvent>;\n\nexport interface Custom {\n  conversionId?: string; // The ads accounts id used for every conversion\n  currency?: string; // Default currency is EUR\n}\n\nexport type EventConfig = Mapping.EventConfig<CustomEvent>;\n\nexport interface CustomEvent {}\n","import type { Destination } from './types';\nimport { isObject } from '@elbwalker/utils';\n\n// Types\nexport * as DestinationGoogleAds from './types';\n\nexport const destinationGoogleAds: Destination = {\n  type: 'google-ads',\n\n  config: {},\n\n  init(config = {}) {\n    const { custom = {}, fn, loadScript } = config;\n    const w = window;\n\n    // required measurement id\n    if (!custom.conversionId) return false;\n\n    // Default currency value\n    custom.currency = custom.currency || 'EUR';\n\n    if (loadScript) addScript(custom.conversionId);\n\n    w.dataLayer = w.dataLayer || [];\n\n    let func = fn || w.gtag;\n    if (!w.gtag) {\n      w.gtag = function gtag() {\n        (w.dataLayer as unknown[]).push(arguments);\n      };\n      func = func || w.gtag;\n      func('js', new Date());\n    }\n\n    // gtag init call\n    func('config', custom.conversionId);\n\n    return config;\n  },\n\n  push(event, config, mapping = {}, options = {}): void {\n    const { custom = {}, fn } = config;\n    const { name } = mapping;\n    const data = isObject(options.data) ? options.data : {};\n\n    if (!name) return;\n\n    const params: Gtag.CustomParams = {\n      send_to: `${custom.conversionId}/${name}`,\n      currency: custom.currency,\n      ...data,\n    };\n\n    const func = fn || window.gtag;\n    func('event', 'conversion', params);\n  },\n};\n\nfunction addScript(\n  conversionId: string,\n  src = 'https://www.googletagmanager.com/gtag/js?id=',\n) {\n  const script = document.createElement('script');\n  script.src = src + conversionId;\n  document.head.appendChild(script);\n}\n\nexport default destinationGoogleAds;\n"],"mappings":";;;;;;;;;AAAA;;;ACMO,IAAM,uBAAoC;AAAA,EAC/C,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,KAAK,SAAS,CAAC,GAAG;AAChB,UAAM,EAAE,SAAS,CAAC,GAAG,IAAI,WAAW,IAAI;AACxC,UAAM,IAAI;AAGV,QAAI,CAAC,OAAO,aAAc,QAAO;AAGjC,WAAO,WAAW,OAAO,YAAY;AAErC,QAAI,WAAY,WAAU,OAAO,YAAY;AAE7C,MAAE,YAAY,EAAE,aAAa,CAAC;AAE9B,QAAI,OAAO,MAAM,EAAE;AACnB,QAAI,CAAC,EAAE,MAAM;AACX,QAAE,OAAO,SAAS,OAAO;AACvB,QAAC,EAAE,UAAwB,KAAK,SAAS;AAAA,MAC3C;AACA,aAAO,QAAQ,EAAE;AACjB,WAAK,MAAM,oBAAI,KAAK,CAAC;AAAA,IACvB;AAGA,SAAK,UAAU,OAAO,YAAY;AAElC,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,OAAO,QAAQ,UAAU,CAAC,GAAG,UAAU,CAAC,GAAS;AACpD,UAAM,EAAE,SAAS,CAAC,GAAG,GAAG,IAAI;AAC5B,UAAM,EAAE,KAAK,IAAI;AACjB,UAAM,OAAO,EAAS,QAAQ,IAAI,IAAI,QAAQ,OAAO,CAAC;AAEtD,QAAI,CAAC,KAAM;AAEX,UAAM,SAA4B;AAAA,MAChC,SAAS,GAAG,OAAO,YAAY,IAAI,IAAI;AAAA,MACvC,UAAU,OAAO;AAAA,MACjB,GAAG;AAAA,IACL;AAEA,UAAM,OAAO,MAAM,OAAO;AAC1B,SAAK,SAAS,cAAc,MAAM;AAAA,EACpC;AACF;AAEA,SAAS,UACP,cACA,MAAM,gDACN;AACA,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,SAAO,MAAM,MAAM;AACnB,WAAS,KAAK,YAAY,MAAM;AAClC;AAEA,IAAO,gBAAQ;","names":[]}