{"version":3,"sources":["webpack:///./src/feature/event-tracker/event-tracker.js","webpack:///./src/foundation/utilities/development.js"],"names":["EventTracker","element","el","eventTrackers","querySelectorAll","settings","Object","assign","parseSettings","log","addEventListeners","addSubscriptions","forEach","event","addEventListener","eventId","getAttribute","trackEvent","subscribe","id","eventEndpoint","fetch","method","mode","isDev","headers","body","JSON","stringify","then","response","handleErrors","json","catch","error","status","data","request","parse","ok","Error","statusText","BaseFeature","window","location","hostname"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;AACA;;;;;;;;;;IAEMA,Y;;;AACL,uBAAYC,OAAZ,EAAqB;AAAA;;AAAA,0HACdA,OADc;;AAEpB,QAAKC,EAAL,GAAUD,OAAV;AACA,QAAKE,aAAL,GAAqB,MAAKD,EAAL,CAAQE,gBAAR,CAAyB,sBAAzB,CAArB;AACA,QAAKC,QAAL,GAAgBC,OAAOC,MAAP,CAAc,EAAd,EAAkB,MAAKC,aAAL,EAAlB,CAAhB;AACA,QAAKC,GAAL,CAAS,4BAAT;AACA,QAAKC,iBAAL;AACA,QAAKC,gBAAL;AAPoB;AAQpB;;;;sCAEmB;AAAA;;AACnB,QAAKR,aAAL,CAAmBS,OAAnB,CAA2B,UAACC,KAAD,EAAW;AACrCA,UAAMC,gBAAN,CAAuB,OAAvB,EAAgC,YAAM;AACrC,SAAMC,UAAUF,MAAMG,YAAN,CAAmB,eAAnB,CAAhB;AACA,SAAI,CAACD,OAAL,EAAc;AACd,YAAKE,UAAL,CAAgBF,OAAhB;AACA,KAJD;AAKA,IAND;AAOA;;;qCAEkB;AAAA;;AAClB,QAAKG,SAAL,CAAe,uBAAf,EAAwC,UAACL,KAAD,EAAW;AAClD,QAAI,CAACA,MAAMM,EAAX,EAAe;AACd,YAAKV,GAAL,CAAS,oBAAT;AACA;AACA;AACD,WAAKQ,UAAL,CAAgBJ,MAAMM,EAAtB;AACA,IAND;AAOA;;;6BAEUJ,O,EAAS;AAAA;;AACnB,OAAI,CAAC,KAAKV,QAAL,CAAce,aAAnB,EAAkC;AACjC,SAAKX,GAAL,CAAS,gCAAT;AACA;AACA;AACD,QAAKA,GAAL,qBAA2BM,OAA3B;AACAM,SACC,KAAKhB,QAAL,CAAce,aADf,EAC8B;AAC5BE,YAAQ,MADoB;AAE5BC,UAAMC,qBAAQ,MAAR,GAAiB,aAFK;AAG5BC,aAAS;AACR,qBAAgB;AADR,KAHmB;AAM5BC,UAAMC,KAAKC,SAAL,CAAe,EAAET,IAAIJ,OAAN,EAAf;AANsB,IAD9B,EASEc,IATF,CASO,UAACC,QAAD,EAAc;AACnB9B,iBAAa+B,YAAb,CAA0BD,QAA1B;AACA,WAAOA,SAASE,IAAT,EAAP;AACA,IAZF,EAaEH,IAbF,CAaO,UAACC,QAAD,EAAc;AACnB,WAAKrB,GAAL,CAASqB,QAAT;AACA,IAfF,EAgBEG,KAhBF,CAgBQ,UAACC,KAAD,EAAW;AACjB,QAAIA,MAAMJ,QAAV,EAAoB;AACnB;AACA,YAAKrB,GAAL,CAAS,gBAAT,EAA8ByB,MAAMJ,QAAN,CAAeK,MAA7C,UAAwDD,MAAMJ,QAAN,CAAeM,IAAvE;AACA,KAHD,MAGO,IAAIF,MAAMG,OAAV,EAAmB;AACzB;AACA,YAAK5B,GAAL,CAAS,eAAT,EAA0ByB,MAAMG,OAAhC;AACA,KAHM,MAGA;AACN;AACA,YAAK5B,GAAL,CAAS,kBAAT,EAA6ByB,KAA7B;AACA;AACD,IA3BF;AA4BA;;;;;AASD;kCACgB;AACf,OAAM7B,WAAW,KAAKH,EAAL,CAAQc,YAAR,CAAqB,eAArB,KAAyC,IAA1D;AACA,UAAOW,KAAKW,KAAL,CAAWjC,QAAX,CAAP;AACA;;;+BAXmByB,Q,EAAU;AAC7B,OAAI,CAACA,SAASS,EAAd,EAAkB;AACjB,UAAMC,MAAMV,SAASW,UAAf,CAAN;AACA;AACD,UAAOX,QAAP;AACA;;;;EAxEyBY,c;;kBAiFZ1C,Y;;;;;;;;;;;;;;;;;ACpFR,IAAMwB,wBAASmB,OAAOC,QAAP,CAAgBC,QAAhB,KAA6B,WAA7B,IAA4CF,OAAOC,QAAP,CAAgBC,QAAhB,KAA6B,WAAxF,C","file":"9-db5fd8cb.pkg.js","sourcesContent":["import BaseFeature from '../../foundation/base/base';\r\nimport { isDev } from '../../foundation/utilities/development';\r\n\r\nclass EventTracker extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\t\tthis.el = element;\r\n\t\tthis.eventTrackers = this.el.querySelectorAll('[data-event-trigger]');\r\n\t\tthis.settings = Object.assign({}, this.parseSettings());\r\n\t\tthis.log('Initializing event tracker');\r\n\t\tthis.addEventListeners();\r\n\t\tthis.addSubscriptions();\r\n\t}\r\n\r\n\taddEventListeners() {\r\n\t\tthis.eventTrackers.forEach((event) => {\r\n\t\t\tevent.addEventListener('click', () => {\r\n\t\t\t\tconst eventId = event.getAttribute('data-event-id');\r\n\t\t\t\tif (!eventId) return;\r\n\t\t\t\tthis.trackEvent(eventId);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\taddSubscriptions() {\r\n\t\tthis.subscribe('/eventTracker/trigger', (event) => {\r\n\t\t\tif (!event.id) {\r\n\t\t\t\tthis.log('Event is undefined');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.trackEvent(event.id);\r\n\t\t});\r\n\t}\r\n\r\n\ttrackEvent(eventId) {\r\n\t\tif (!this.settings.eventEndpoint) {\r\n\t\t\tthis.log('Tracking endpoint is undefined');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.log(`Tracking event:${eventId}`);\r\n\t\tfetch(\r\n\t\t\tthis.settings.eventEndpoint, {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tmode: isDev ? 'cors' : 'same-origin',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Type': 'Application/json; charset=utf-8'\r\n\t\t\t\t},\r\n\t\t\t\tbody: JSON.stringify({ id: eventId })\r\n\t\t\t})\r\n\t\t\t.then((response) => {\r\n\t\t\t\tEventTracker.handleErrors(response);\r\n\t\t\t\treturn response.json();\r\n\t\t\t})\r\n\t\t\t.then((response) => {\r\n\t\t\t\tthis.log(response);\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tif (error.response) {\r\n\t\t\t\t\t// Client received an error response (5xx, 4xx)\r\n\t\t\t\t\tthis.log('Response Error', `${error.response.status}: ${error.response.data}`);\r\n\t\t\t\t} else if (error.request) {\r\n\t\t\t\t\t// Client never received a response, or request never left\r\n\t\t\t\t\tthis.log('Network error', error.request);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// For debugging purposes if something unexpected goes wrong\r\n\t\t\t\t\tthis.log('Unexpected Error', error);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tstatic handleErrors(response) {\r\n\t\tif (!response.ok) {\r\n\t\t\tthrow Error(response.statusText);\r\n\t\t}\r\n\t\treturn response;\r\n\t}\r\n\r\n\t// Get settings from data-attributes\r\n\tparseSettings() {\r\n\t\tconst settings = this.el.getAttribute('data-settings') || '{}';\r\n\t\treturn JSON.parse(settings);\r\n\t}\r\n}\r\n\r\nexport default EventTracker;\r\n","export const isDev = (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1');\r\n"],"sourceRoot":""}